无法将选择值传递给控制器

时间:2013-06-19 15:55:47

标签: c# asp.net-mvc-4 view model controller

我很难将View上的Select值传递给控制器​​。 我的视图中有两个项目,我希望返回模型,我可以在控制器中调用。这是我到目前为止所拥有的。

<label for="phone" class="ui-hidden-accessible">Phone Number:</label>
@Html.TextBoxFor(m => m.PhoneNumber, new { @class = "field-margin", id="phone",   type="tel", placeholder="Phone Number"})

<p></p>
<div><p>Save phone for future purchases?</p>
<select name="SavePhone"id ="SavePhone" class="SavePhone" data-role="select">   
<option value="false" @(Model.SavePhone == false ? "selected" : "")>No</option>             
<option value="true"  @(Model.SavePhone == true ? "selected" : "")>Yes</option>                 
</select><

我不确定如何为选择选项调用第二部分。但是我接受电话号码的代码的顶部部分有效。我在模型,控制器和视图中的命名都是一样的,所以我不知道下一步该做什么。如果您有任何建议,我们将不胜感激。

谢谢!


修改

我想出了我的一部分问题,因为我正在加载它

@Html.Partial("MobilePhoneView", Model)

在第一页上单击“继续”后,它会使用我的两个选项加载视图,并在显示之前点击选择块。对此有什么解决方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用AJAX执行此操作。如果您有以下HTML

<select name="SavePhone"id ="SavePhone" class="SavePhone" data-role="select">
<option value="false">No</option>             
<option value="true">Yes</option>                 
</select>

然后,您只需使用以下命令将您的选择发送给控制器:

<script language="javascript" type="text/javascript">
  $(document).ready(function () {

      $("form").submit(function () { 
        $.ajax({
           url: '@Url.Action("MethodName","ControllerName")',
           type: 'POST',
           cache: false,
           data: { Selected: $("#SavePhone").val() },
           success: function (data) {
             //
           }
         });
  });
  )};
</script>

您将在控制器中获得此值

private string MethodName (string Selected)
{
  String value = Selected;
  return "OK"; 
}

答案 1 :(得分:0)

您的代码唯一可能的问题可能是selected属性。并非所有浏览器都只了解selected(我相信这是HTML5设置此类属性的方式),尽管所有人都应该理解selected="selected"。所以你可以尝试的是:

<select name="SavePhone"id ="SavePhone" class="SavePhone" data-role="select">   
    <option value="false" @(Model.SavePhone == false ? "selected=\"selected\"" : "")>No</option>             
    <option value="true"  @(Model.SavePhone == true ? "selected=\"selected\"" : "")>Yes</option>                 
</select>