我正在使用ASP。. NET mvc项目和我熟悉的通常剃刀助手@Html.TextBoxFor…等等,但是我的情况是,我需要在模型中使用下拉列表设置字符串值,列表中总是有相同的12个项目,我只需要用这些项目填充这个列表并确保它将模型中的字段值设置为所选的那个。
我很好奇我应该怎么做这件事?我看过下拉教程,我可能能够得到下拉工作,但我不确定如何设置字段值,我不确定在哪里存储这12个字符串。我想硬编码它们,而不是把它们放在数据库或其他东西,因为它是如此之少,但我愿意接受更好的建议。
感谢您的帮助
更新这是我的Razor代码,我创建了一个简单的视图模型,其中包含要在下拉菜单中显示的项目列表,并包括我想要用于此创建视图的模型类。
@Html.DropDownListFor(x => x.question.QuestionId, new SelectList(Model.AreasList), new { @class = "dropdown" })
这是我的视图模型
public class CreateQuestionViewModel
{
public Question question { get; set; }
public IEnumerable<String> AreasList = new List<String> { "Option 1", "Option 2" };
}
它工作,但我不明白为什么visual studio一直扔给我一个空引用和点在我的剃刀代码下拉?
当然,所以当用户选择List Item时,您需要根据所选择的List Item设置模型字段,假设您有一个静态下拉列表:
//这是你的视图view .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});
}