如何使用下拉列表在模型中设置字符串值?

时间:2014-08-07 18:17:09

标签: asp.net-mvc drop-down-menu

我正在使用ASP.NET mvc projekt,而且我熟悉通常的剃刀助手@ Html.TextBoxFor ...等等,但我在需要的情况下使用下拉列表在模型中设置字符串值,列表中始终包含相同的12个项目,我只需要使用这些项目填充此列表,并确保将模型中的字段值设置为所选项目。 / p>

我很好奇我应该怎么做呢?我查看了下拉教程,我可能会得到一个下拉列表,但我不确定如何设置字段值,我不确定在哪里存储这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" };

    }

它有效,但我无法弄清楚为什么visual studio会一直向我抛出一个空引用并指向我的剃刀代码下拉?

1 个答案:

答案 0 :(得分:0)

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

//这是您的视图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>

//这是您要在(模型)

中设置值的类
Class1
{
public string ValueFromList {get;set;}

}

//然后你需要一个动作方法(在你的控制器中),它将使用新的值更新模型:

public Controller1
{

[HttpPost]
public JsonResult Action1(string value)
{

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