【发布时间】:2010-11-25 02:43:38
【问题描述】:
我有一个包含另一个类作为其属性之一的类。
public class SiteProperties
{
public SiteProperties()
{
DropFontFamily = "Arial, Helvetica, Sans-serif";
}
public string DropFontFamily { get; set; }
private ResultPageProperties m_ResultPagePropertyList;
public ResultPageProperties ResultPagePropertyList
{
get
{
if (m_ResultPagePropertyList == null)
m_ResultPagePropertyList = new ResultPageProperties();
return m_ResultPagePropertyList;
}
set { m_ResultPagePropertyList = value; }
}
}
第二类只有一个属性
public class ResultPageProperties
{
public ResultPageProperties()
{
ResultFontFamily = "Arial, Helvetica, Sans-serif";
}
public string ResultFontFamily { get; set; }
}
我的控制器只是抓取 SiteProperties 并返回视图。提交时,它接受 SiteProperties 并返回相同的视图。
public class CompanyController : Controller
{
public ActionResult SiteOptions(int id)
{
SiteProperties site = new SiteProperties();
PopulateProperyDropDownLists();
return View("SiteOptions", site);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SiteOptions(SiteProperties properties)
{
PopulateProperyDropDownLists();
return View("SiteOptions", properties);
}
private void PopulateProperyDropDownLists()
{
var fontFamilyList = new List<SelectListItem>();
fontFamilyList.Add(new SelectListItem() { Text = "Arial, Helvetica, Sans-serif", Value = "Arial, Helvetica, Sans-serif" });
fontFamilyList.Add(new SelectListItem() { Text = "Times New Roman, Times, serif", Value = "Times New Roman, Times, serif" });
fontFamilyList.Add(new SelectListItem() { Text = "Courier New, Courier, Monospace", Value = "Courier New, Courier, Monospace" });
ViewData["FontFamilyList"] = fontFamilyList;
}
}
视图包含呈现 ResultPageProperties 模型的局部视图。
<% using (Html.BeginForm("SiteOptions", "Company", FormMethod.Post))
{%>
<p><input type="submit" value="Submit" /></p>
<div>View level input</div>
<div>
<label>Font family</label><br />
<%= Html.DropDownListFor(m => m.DropFontFamily, ViewData["FontFamilyList"] as List<SelectListItem>, new { Class = "UpdatesDropDownExample" })%>
</div>
<% Html.RenderPartial("ResultPagePropertyInput", Model.ResultPagePropertyList); %>
<% } %>
部分只是
<div style='margin-top: 1em;'>View level input</div>
<div>
<label>Font family</label><br />
<%= Html.DropDownListFor(m => m.ResultFontFamily, ViewData["FontFamilyList"] as List<SelectListItem>, new { Class = "UpdatesResultPageExample" })%>
</div>
好的,所以当页面呈现时,您在两个选择中都会得到“Arial, ...”。如果您为两者选择另一个选项并单击提交,则活页夹会填充 SiteProperties 对象并将其传递给控制器。但是,ResultFontFamily 始终包含原始值。我期待它具有用户选择的值。
我错过了什么?
【问题讨论】:
标签: asp.net-mvc