C# MVC4下拉列表,用于不提交所选值
视图模型C# MVC4下拉列表,用于不提交所选值,c#,asp.net-mvc,html-helper,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Html Helper,Asp.net Mvc Viewmodel,视图模型 namespace VendorFinancing.Web.Models { public class CreateApplicationViewModel { public Application Application { get; set; } public List<Equipment> Equipments { get; set; } public string SelectedVendorId;
namespace VendorFinancing.Web.Models
{
public class CreateApplicationViewModel
{
public Application Application { get; set; }
public List<Equipment> Equipments { get; set; }
public string SelectedVendorId;
public IEnumerable<SelectListItem> VendorList { get; set; }
}
}
控制器
public ActionResult Create()
{
var model = new CreateApplicationViewModel();
model.VendorList = new List<SelectListItem>() { new SelectListItem() { Text = "London", Value = "1" },
new SelectListItem() { Text = "New York", Value="2" } };
return View(model);
}
[HttpPost]
public ActionResult Create(CreateApplicationViewModel model)
{
return View(model);
}
看法
这是非常基本的创建。提交表单时,SelectedVendorId仍然为空。我在不同的地方尝试了相同的例子,但仍然有效。我想不出原因。任何帮助都是值得的
编辑:发现我的错误SelectedVendorId没有get和set。在使其成为一个属性后,它可以工作。,假设您安装了Firebug或类似软件,请仔细检查实际的POST请求;可能是该值已过账,但模型活页夹未提取。提交表单时是否禁用了下拉菜单?@Tieson:让我检查fiddler@ekad:怎么才能禁用下拉菜单?我发现了我的错误。我的viewModel selectedVendorId没有设置和获取。多么愚蠢的错误啊。
@using (Html.BeginForm("Create", "Application", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
<div class="form-horizontal">
<h2>Submit Application </h2>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<h3>Pick Vendor</h3>
<div class="form-group">
<div class="col-md-2">
@Html.LabelFor(c => c.SelectedVendorId)
</div>
<div class="col-md-10">
@Html.DropDownListFor(model => model.SelectedVendorId, Model.VendorList)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10 pull-left">
<input type="submit" value="Create" class="btn btn-default pull-left" />
</div>
</div>
</div>
}