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