将选定的单选按钮值绑定到模型属性

时间:2017-02-05 22:14:23

标签: c# asp.net-mvc radio-button selectedvalue

我有一个由Razor视图使用的页面视图模型

@model Abc.Ecomm.ViewModels.AddressViewModel

AddressViewModel确实有一个属性

public string AddressId { get; set; }

然后我尝试生成一个单选按钮,我需要将其值绑定到模型中的AddressId

@Html.RadioButtonFor(m => m.AddressId ,"NA",new { name="" , id="NA"})

但是当提交时,该值不受约束。 我做错了什么或可能出错的是什么?

3 个答案:

答案 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"}) 
.......