由於我是asp.net mvc 3的新手,我對其內部過程並不瞭解。我有兩個作用,以創建新的類別爲獲取和Post方法:此屬性不能設置爲空值
public ActionResult Create()
{
List<Category> cat = this.display_children(null, 0);
List<SelectListItem> items = new SelectList(cat, "ID", "CategoryName").ToList();
items.Insert(0, (new SelectListItem { Text = "root", Value = "" }));
ViewBag.ParentCategoryID = items;
return View();
}
[HttpPost]
public ActionResult Create(Category category)
{
if (ModelState.IsValid)
{
db.Categories.AddObject(category);
db.SaveChanges();
return RedirectToAction("Index");
}
List<Category> cat = this.display_children(null, 0);
List<SelectListItem> items = new SelectList(cat, "ID", "CategoryName").ToList();
items.Insert(0, (new SelectListItem { Text = "root", Value = "" }));
ViewBag.ParentCategoryID = items;
return View(category);
}
下面是查看:
@model IVRControlPanel.Models.Category
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Category</legend>
<div class="editor-label">
@Html.LabelFor(model => model.CategoryName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CategoryName)
@Html.ValidationMessageFor(model => model.CategoryName)
</div>
<div class="editor-label">
@Html.Label("Select Category")
</div>
<div>
@*@Html.DropDownList("CategoryList",new SelectList(ViewBag.Categories))*@
@Html.DropDownList("ParentCategoryID", ViewBag.ParentCategoryID as SelectList)
@Html.ValidationMessageFor(model => model.ParentCategoryID)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
問題: 當我點擊創建按鈕而不填滿分類名引發以下異常:
This property cannot be set to a null value.
只有當visual studio處於調試模式時才引發異常,而wh我繼續調試,然後只驗證消息中顯示錯誤。在這裏,實際上必須是錯誤應該顯示,而不是在調試模式下拋出異常,這是正常的。我已經在數據庫以下類別表列,並使用模型第一種方法實體框架:
- ID - >主鍵和身份,整數
- 類別名稱 - >非空,VARCHAR(50)
- ParentCategoryID - >可空
我不擅長asp.net mvc 3,不知道可能是什麼問題。
我已經完成了你所說的但顯示了'編譯器錯誤消息:CS1660:不能將lambda表達式轉換爲鍵入'string',因爲它不是委託類型'。這裏,ParentCategoryID是整數類型。有沒有其他的方法 – CodeManiac 2012-07-12 06:18:35
在哪條線上拋出這個錯誤? – 2012-07-12 06:23:35
感謝您的回答。最後我有解決方案。問題在於CategoryName字符串由於預綁定驗證而轉換爲空,因此我添加了DisplayFormat屬性(ConvertEmptyStringToNull = false)。現在,我不會拋出異常,並顯示客戶端驗證消息 – CodeManiac 2012-07-12 06:41:03