C# Can';t将选择值传递给控制器

C# Can';t将选择值传递给控制器,c#,asp.net-mvc-4,view,model,controller,C#,Asp.net Mvc 4,View,Model,Controller,我很难将视图上的Select值传递给控制器。 我的视图上有两个项目,我希望返回到模型,在那里我可以调用控制器。这是我到目前为止得到的 <label for="phone" class="ui-hidden-accessible">Phone Number:</label> @Html.TextBoxFor(m => m.PhoneNumber, new { @class = "field-margin", id="phone", type="tel", plac

我很难将视图上的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><

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

您可以使用AJAX来实现这一点。如果您有以下HTML

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

代码中唯一可能出现的问题可能是
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>

不
对

您想在这里实现什么?我想在将表单提交给控制器后返回Model.SavePhone中的true或false值。我已经在传递模型,我知道帖子可以工作,因为我上面代码的顶部工作正常。您遇到了什么问题?@Andrei它没有正确传递值,我甚至不确定第二部分的语法是否正确。这就是您在选择下拉列表中通常传递值的方式吗?语法似乎还可以,请参阅我的答案,了解我提出的唯一可能的问题。谢谢您的建议,我将尝试此方法!我发现了问题的一部分,因为我将其加载为@Html.Partial(“MobilePhoneView”,Model),在我单击“继续”后,它将使用我的两个选项加载视图,并在显示之前点击“选择”块。这方面有什么办法吗?我真的不确定现在该怎么办..我找到了问题的根源,我需要创建一个@Html.DropDownListFor(m=>m.SavePhone,[list of true或false],…),类似的东西应该可以工作。您知道如何实现此功能吗>
<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"; 
}
<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>