Asp.net mvc 如何使用下拉菜单在模型中设置字符串值?

Asp.net mvc 如何使用下拉菜单在模型中设置字符串值?,asp.net-mvc,drop-down-menu,Asp.net Mvc,Drop Down Menu,我正在使用ASP.NETMVC项目,我熟悉常用的razor helpers@Html.TextBoxFor。。。等等。但我需要在模型中使用下拉列表设置字符串值,列表中始终有相同的12个项目,我只需要用这些项目填充此列表,并确保它将模型中的字段值设置为所选的值 我很好奇我该怎么做?我已经看过下拉菜单教程,我可能可以让下拉菜单工作,但我不知道如何设置字段值,也不知道在哪里存储这12个字符串。我想把它们硬编码,而不是把它们放在数据库或其他地方,因为它太少了,但我愿意接受更好的建议 谢谢你的帮助 更新

我正在使用ASP.NETMVC项目,我熟悉常用的razor helpers@Html.TextBoxFor。。。等等。但我需要在模型中使用下拉列表设置字符串值,列表中始终有相同的12个项目,我只需要用这些项目填充此列表,并确保它将模型中的字段值设置为所选的值

我很好奇我该怎么做?我已经看过下拉菜单教程,我可能可以让下拉菜单工作,但我不知道如何设置字段值,也不知道在哪里存储这12个字符串。我想把它们硬编码,而不是把它们放在数据库或其他地方,因为它太少了,但我愿意接受更好的建议

谢谢你的帮助

更新

这是我的Razor代码,我创建了一个简单的viewmodel,其中包含要在下拉列表中显示的项目列表,并包括我要用于此创建视图的模型类

@Html.DropDownListFor(x => x.question.QuestionId, new SelectList(Model.AreasList), new { @class = "dropdown" })
这是我的viewmodel

public class CreateQuestionViewModel
    {
        public Question question { get; set; }

        public IEnumerable<String> AreasList = new List<String> { "Option 1", "Option 2" };

    }

这是可行的,但我不明白为什么VisualStudio一直向我抛出一个空引用,并指向我的razor代码作为下拉列表

当然,因此,假设您有一个静态下拉列表,您需要根据用户选择的列表项设置模型字段:

//这是您的视图View1.chtml

    @model Class1

        <select id="list1" name="list1">
            <option value="0">option1</option>
            <option value="1">option2</option>
            </select>

    <script>
    $(document.ready)(function(){

    //set the list from model
    var modelvalue = '@Html.Raw(Json.Encode(Model.ValueFromList))';

    $(#list1).val(modelvalue);

    });
//handle the change event of Dropdown list
 $("#country").change(function() 
     { 
         var _selected = $("#list1").val();
         var options = 
         {
             type: "POST",
             url: '@Url.Action("Action1","controller1")',
             data:  _selected + ,
             contentType: "application/json; charset=utf-8",
             dataType: "json",

             success: function(msg) {
                      //set the returned value as the selected dropdownlist value
               $(#list1).val(msg);

                 }
             }
         }; 
.ajax(options);   


    </script>
//然后,您需要控制器中的操作方法,该方法将使用新值更新模型:

public Controller1
{

[HttpPost]
public JsonResult Action1(string value)
{

Class1 cl1=new Class1();
cl1.ValueFromList=value;
return Json(new {Success="true", cl1});
}

谢谢你或者你的回答,很明显它会起作用,但我希望有一个更简单的方法来做。。。我的意思是,如果您可以使用带有lambda表达式的fx razor更改模型中的变量,那么肯定有一种同样简单的方法可以使用下拉列表,而不必求助于任何JQuery和其他控制器方法?事实上,我已经让它以这种方式工作了。我唯一的问题是,当对象仍然构建在数据库中时,我会一直得到一个空引用错误。也许您可以帮助解决空引用错误?我会用我的代码更新我的答案。奇怪的拼写错误sry,问题是对象被构建并保存在db中,但我还是得到了一个空引用错误?
public Controller1
{

[HttpPost]
public JsonResult Action1(string value)
{

Class1 cl1=new Class1();
cl1.ValueFromList=value;
return Json(new {Success="true", cl1});
}