Asp.net mvc 使用ASP.NET MVC在用户控件中命名ASP.NET控件

Asp.net mvc 使用ASP.NET MVC在用户控件中命名ASP.NET控件,asp.net-mvc,Asp.net Mvc,我想知道是否有办法使ASP.NET控件与我的ASP.NET MVC应用程序配合使用。这就是我正在做的 我有一个订单页面,显示关于单个订单对象的信息。页面通常会有一组数据行,每行代表一个OrderItem对象。每行都是一个ASP.NET用户控件。在用户控件上有一个表单元素,它有两个文本框(数量和价格)和一个更新按钮 单击update按钮时,我希望表单将该单个OrderItem行的数据发布到控制器方法,并更新数据库中的OrderItem记录 我的问题是:当post发生时,框架会抱怨,因为表单上的字段

我想知道是否有办法使ASP.NET控件与我的ASP.NET MVC应用程序配合使用。这就是我正在做的

我有一个订单页面,显示关于单个订单对象的信息。页面通常会有一组数据行,每行代表一个OrderItem对象。每行都是一个ASP.NET用户控件。在用户控件上有一个表单元素,它有两个文本框(数量和价格)和一个更新按钮

单击update按钮时,我希望表单将该单个OrderItem行的数据发布到控制器方法,并更新数据库中的OrderItem记录

我的问题是:当post发生时,框架会抱怨,因为表单上的字段与控制器方法上的参数不匹配。每个表单字段类似于“OrderItem_1$Quantity”或“OrderItem_2$Price”,而不是与我的方法参数匹配的“Quantity”或“Price”

有人告诉我,我可以通过确保我所有控件的ID对于页面是唯一的来克服这一问题,但是允许在不同的表单之间重复名称s,这样,如果发布了单个行的表单,则名称可以与我的控制器方法上的名称相匹配

唯一的问题是,我正在为文本框使用ASP.NET控件(我真的想继续这样做),但我找不到任何方法覆盖名称字段。ASP.NET控件上没有Name属性,甚至当我尝试使用Attributes accessor属性设置它时,我会说“control.Attributes[“Name”]=“Price”;“它只是将另一个Name=属性添加到HTML标记中,但这不起作用


有人知道我怎样才能做到这一点吗?我真的不喜欢所有的HtmlHelper函数,比如TextBox和DropDown,因为我讨厌我的.aspx像PHP或ASP一样带有标签和所有东西。谢谢

我认为您处于ASP.NET WebForms和ASP.NET MVC这两个世界之间。您确实需要在MVC中使用Html.TextBox方法等。这使您能够完全控制标记,这是MVC的主要优点之一

您在控制生成的HTML时遇到的问题,例如获取两个名称属性,正是MVC设计用来解决的问题。如果你停止与之抗争,顺其自然,它会工作得更好

标签不是问题,除非你有逻辑。在视图上放置简单的表示逻辑是可以的


如果您不喜欢这样,那么最好还是坚持使用标准的ASP.NET。

我认为您处于ASP.NET WebForms和ASP.NET MVC这两个世界之间。您确实需要在MVC中使用Html.TextBox方法等。这使您能够完全控制标记,这是MVC的主要优点之一

您在控制生成的HTML时遇到的问题,例如获取两个名称属性,正是MVC设计用来解决的问题。如果你停止与之抗争,顺其自然,它会工作得更好

标签不是问题,除非你有逻辑。在视图上放置简单的表示逻辑是可以的

如果您不喜欢这样,那么最好还是坚持使用标准的ASP.NET