我有一个由Razor视图使用的页面视图模型
@model Abc.Ecomm.ViewModels.AddressViewModel
AddressViewModel
确实有一个属性
public string AddressId { get; set; }
然后我尝试生成一个单选按钮,我需要将其值绑定到模型中的AddressId
@Html.RadioButtonFor(m => m.AddressId ,"NA",new { name="" , id="NA"})
但是当提交时,该值不受约束。 我做错了什么或可能出错的是什么?
答案 0 :(得分:2)
注意:以下答案错误。我会删除它,但注释指出了ASP.NET MVC框架的一个有趣的行为。
在ASP.NET MVC中执行模型绑定时,它会通过name
属性绑定模型。
您通过明确清除此属性来阻止这种情况。
只需将其更改为:
@Html.RadioButtonFor(m => m.AddressId ,"NA",new { id="NA"})
了解HTML表单将值作为一组键值对发送回服务器,每个键都是相应HTML输入控件上的name
属性。
答案 1 :(得分:2)
我在部分视图中使用了表单本身的Razor代码,并且提交按钮位于主视图中。我将表单标签移出到主视图以包含所述单选按钮,现在它已经很好了。
基本错误。
我在这里回答这个并通过接受它来保持这个答案活着 - 不仅仅是为了强调这个错误,而是安德鲁/斯蒂芬在答案中的评论,其中阐明了@Html.RadioButtonFor
的一些压倒一切的行为和相关用法。
答案 2 :(得分:1)
请你试试这个吗?
Html.RadioButtonFor(m => m.AddressId , 1, new { id = "1"})
Html.RadioButtonFor(m => m.AddressId , 2, new { id = "2"})
.......