【问题标题】:Get posted selected value from radio button in view从视图中的单选按钮获取发布的选定值
【发布时间】:2015-03-07 22:13:17
【问题描述】:

我有一个视图,其中最多显示 5 个单选按钮,如下所示:

查看

foreach(var item in Model.AvailableOptions)
{
     @Html.RadioButtonFor(m => m.Option, item.OptionId, new { Id = item.Id});
}

型号

IList<Options> AvailableOptions {get; set;}

然后我在处理更改页面上的某些表单的同一视图上有一个 javascript。例如,如果我有 5 个单选按钮,当我单击每个按钮时,我会隐藏表单并显示下一个等等。

问题是,如果有 5 个单选按钮,而我在第三个单选按钮上,并且我在表单中提交了一些无效条目,那么当它返回页面时,它会将其设置为第一个单选按钮。我想知道提交时选择了哪一个,以便我可以在 javascript 上重置它。

我想要类似的东西(只是不知道该怎么做)

var selectedValue =  '@(int)Model.SomehowRetrieveTheValuePosted';

那么我就可以做到:

jQuery(".radioOptions")[selectedValue].show();

或类似的东西。

【问题讨论】:

  • 您不能将单选按钮(或任何控件)绑定到复杂对象(typeof Option) - 您需要绑定到值类型属性。
  • 可以分享一个例子吗?

标签: jquery html asp.net-mvc forms


【解决方案1】:

您的模型需要一个属性来绑定选定的选项,例如

public class MyModel
{
  public int SelectedOption { get; set; }
  IList<Options> AvailableOptions {get; set;}
}

查看

foreach(var option in Model.AvailableOptions)
{
  @Html.RadioButtonFor(m => m.SelectedOption , option.OptionId, new { Id = option.Id});
  // assume Option contains a property Name for display
  <label for="@option.Id">@option.Name</label> 
}

如果SelectedOption 的值与其中一个选项的Id 匹配,则在页面首次显示时将被选中。如果您选择另一个选项,则在您发布并返回视图时将选择该选项。

旁注:由于您没有为Options 生成任何控件,因此您需要确保在返回视图时重新分配选项的值。

【讨论】:

  • 那么我还需要在 jquery 中分配它吗?我在哪里可以找到 html 上的选定内容?非常感谢..我会添加一个这样的属性:)。
  • 不,不需要 jquery。 MVC 框架负责所有的绑定。
猜你喜欢
  • 2016-08-30
  • 1970-01-01
  • 2022-01-22
  • 2018-09-02
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
相关资源
最近更新 更多