C# 如何从模型中填充dropdownistFor
我需要帮助使用razor视图填充MVC应用程序中的状态下拉列表: 在我的模型中,我有一个状态属性:C# 如何从模型中填充dropdownistFor,c#,asp.net-mvc,html.dropdownlistfor,C#,Asp.net Mvc,Html.dropdownlistfor,我需要帮助使用razor视图填充MVC应用程序中的状态下拉列表: 在我的模型中,我有一个状态属性: public SelectList State { get { return new SelectList(StateDictionary, "Value", "Key"); } } 这是州词典的缩写版本 public static readonly IDictionary<string, string> StateDictionary = new
public SelectList State
{
get { return new SelectList(StateDictionary, "Value", "Key"); }
}
这是州词典的缩写版本
public static readonly IDictionary<string, string> StateDictionary = new
Dictionary<string, string> {
{"ALABAMA", "AL"},
{"ALASKA", "AK"},
{"AMERICAN SAMOA", "AS"},
{"ARIZONA ", "AZ"},
{"ARKANSAS", "AR"},
{"CALIFORNIA ", "CA"},
{"COLORADO ", "CO"},
{"CONNECTICUT", "CT"},
{"DELAWARE", "DE"},
{"DISTRICT OF COLUMBIA", "DC"},
{"FEDERATED STATES OF MICRONESIA", "FM"},
{"FLORIDA", "FL"},
{"GEORGIA", "GA"},
};
公共静态只读IDictionary StateDictionary=new
字典{
阿拉巴马州,
{“阿拉斯加”,“AK”},
{“美属萨摩亚”,“作为”},
{“亚利桑那州”、“亚利桑那州”},
{“阿肯色州”,“阿肯色州”},
{“加利福尼亚州”、“加利福尼亚州”},
{“科罗拉多州”,“科罗拉多州”},
{“康涅狄格州”、“CT”},
{“特拉华州”,“德”},
{“哥伦比亚特区”},
{“密克罗尼西亚联邦”、“FM”},
{“佛罗里达州”,“佛罗里达州”},
{“格鲁吉亚”,“GA”},
};
在我看来,我有:
<div class="form-group">
@Html.LabelFor(m => m.State,new{@class="col-lg-2 control-label"})
@Html.DropDownListFor(m => m.State,Model.State,new {@class="form-control" })
</div>
@LabelFor(m=>m.State,新的{@class=“col-lg-2控制标签”})
@DropDownListFor(m=>m.State,Model.State,new{@class=“form control”})
当我试图访问我的视图时,我不断得到一个“对象引用未设置”错误
如何在此模型中填充dropdownlist?我认为您应该在模型中添加一个属性
public string SelectedState { get; set; }
然后在视图中:
@Html.DropDownListFor(m => m.SelectedState, Model.State, new { @class="form-control" })
然后在提交时,您将在模型的SelectedState
属性上获得选中的状态值尝试以下操作:
您的型号
public class YourModel
{
public string SelectedValue { get; set; }
public SelectList Values { get; set; }
}
您的控制器
public ActionResult YourMethod()
{
var dictionary = new Dictionary<string, string>
{
{"ALABAMA", "AL"},
{"ALASKA", "AK"},
{"AMERICAN SAMOA", "AS"},
{"ARIZONA ", "AZ"},
{"ARKANSAS", "AR"},
{"CALIFORNIA ", "CA"},
{"COLORADO ", "CO"},
{"CONNECTICUT", "CT"},
{"DELAWARE", "DE"},
{"DISTRICT OF COLUMBIA", "DC"},
{"FEDERATED STATES OF MICRONESIA", "FM"},
{"FLORIDA", "FL"},
{"GEORGIA", "GA"},
};
var model = new YourModel
{
// Choose one of the below options for displaying either the long or short name in the dropdown
//Values = new SelectList(dictionary, "value", "key")
Values = new SelectList(dictionary, "key", "value")
};
return View(model);
}
您需要这样一个属性:
public string State { get; set; }
在控制器中,在ViewBag中设置词典
在你看来:
@Html.DropDownListFor(m => m.State, new SelectList(ViewBag.States, "Key", "Value"))
对象引用未设置为对象的实例。源错误:第126行:第127行:@Html.LabelFor(m=>m.State,new{@class=“col-lg-2 control label”})第128行:@Html.DropDownListFor(m=>m.SelectedState,Model.State,new{@class=“form control”})第129行:第130行:您是否可以在创建模型并调用视图的控制器上发布代码,您应该执行类似于返回视图(model)的操作;模型似乎为Null我尝试传递模型,但得到了相同的错误:[AllowAnonymous]public ActionResult Register(){RegisterModel=new RegisterModel();return View(model);}这很奇怪,我正在测试您的代码,似乎可以正常工作,应该还有其他原因,如果发布控制器和模型代码,我们可能会看到是否有其他错误。说明:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。异常详细信息:System.ArgumentNullException:值不能为null。参数名称:items
@Html.DropDownListFor(m => m.State, new SelectList(ViewBag.States, "Key", "Value"))