【发布时间】:2014-07-31 10:18:14
【问题描述】:
我想知道是否有人可以帮助我理解为什么下面的 POST 操作 (SelectDomain) 总是传递一个空值。 Post 方法应该使用下拉菜单传递一个枚举类型( Demo, Client, Dev },但目前不是这种情况。
在我的控制器中,我有以下几行:
public enum DomainCategories { Demo, Client, Dev };
public ActionResult SelectDomain()
{
SetViewBagDomainType(DomainCategories.Client);
return View();
}
private void SetViewBagDomainType(DomainCategories domainCategories)
{
IEnumerable<DomainCategories> values = Enum.GetValues(typeof(DomainCategories)).Cast<DomainCategories>();
IEnumerable<SelectListItem> items =
from value in values
select new SelectListItem
{
Text = value.ToString(),
Value = value.ToString(),
Selected = value == domainCategories,
};
ViewBag.WebsiteType = items;
}
[HttpPost]
public ActionResult SelectDomain(DomainCategories domainType)
{
ViewBag.messageString = domainType.ToString() +
" val = " + (int)domainType;
myWebsite.subdomain = domainType.ToString();
createWebsite();
return View(myWebsite);
}
在视图中我有以下内容:
@model Installer.Models.Website
@{
ViewBag.Title = "SelectCategory";
}
<h2>Select Category</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<fieldset>
Subdomain:
@Html.DropDownList("WebsiteType")
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
}
完整的例外是: [ArgumentException:参数字典包含“Installer.Controllers.网站控制器”。可选参数必须是引用类型、可空类型或声明为可选参数。
任何帮助表示赞赏。
【问题讨论】:
-
请在发帖时更加努力地格式化您的代码。真的没有必要让它看起来那么凌乱。 哪里你得到那个错误?大概这是一个例外 - 堆栈跟踪是什么样的?
-
没问题,乔恩。我按下 ctrl K 并认为它会处理它。
-
不,这只是缩进或凸出一次。 始终在发布之前查看预览。通读您的问题,确保它按照您的要求清晰明了,并按照您的要求进行布局。
-
好的,谢谢。我将来会做的。你现在的问题清楚了吗?
-
不,因为您还没有提供异常的详细信息 - 或者您的 POST 请求的内容是什么。
标签: c# asp.net-mvc dictionary html.dropdownlistfor