1
請幫我理解爲什麼我的視圖模型被視圖返回爲空。我試圖在谷歌找到解決方案,但絕大多數的建議是添加隱藏。但對我來說將Html.HiddenFor沒有工作
這裏是我的代碼由View(PartialView)返回的ViewModel爲空
的ViewModels
public class MyViewModel
{
public FilterViewModel Filter {get; set;}
public MyViewModel()
{
Filter = new FilterViewModel();
}
}
public class FilterViewModel
{
public IEnumerable<SelectListItem> TimeUnits { get; set; }
public string SelectedTimeUnit { get; set; }
}
控制器
public class HomeController : Controller
{
public ActionResult Index()
{
MyViewModel model = new MyViewModel();
model.Filter.TimeUnits = new SelectList(new string[] {"week", "month", "year"});
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
*here I have empty model*
return View();
}
}
查看
@model Mvc4WebApplication.Models.MyViewModel
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.Filter.SelectedTimeUnit)
@Html.Partial("_FilterPartial", Model.Filter)
<input type="submit" class="ok" value="OK" />
}
PartialView
@model Mvc4WebApplication.Models.FilterViewModel
<div class="select">
<div class="background">
@Html.DropDownListFor(m => m.SelectedTimeUnit, Model.TimeUnits as SelectList, "Select time unit", new { onchange = "FetchPeriods();" })
</div>
</div>
Thanx提前。
UPD 生成的HTML看起來像
<form action="/" method="post">
<input id="Filter_SelectedTimeUnit" name="Filter.SelectedTimeUnit" type="hidden" value="">
<div class="select">
<div class="background">
<select id="SelectedTimeUnit" name="SelectedTimeUnit" onchange="FetchPeriods();">
<option value="">Select time unit</option>
<option>week</option>
<option>month</option>
<option>year</option>
</select>
</div>
</div>
<input type="submit" class="ok" value="OK">
</form>
什麼是生成的HTML是什麼樣子?另外,爲什麼你在'EditorTemplate'上使用部分'_FilterPartial'? – 2013-04-09 12:54:27
我在上面的問題中添加了生成的html。我已經把這個簡單的例子。我在我的系統的幾個地方使用這個局部視圖 – Vic 2013-04-09 13:03:09
爲什麼'SelectedTimeUnit'被引用兩次;一次作爲隱藏的輸入,第二次在局部視圖中?我也看不到'TimeUnits'。 – 2013-04-09 13:10:33