我想使用Html.ListBoxFor幫手來顯示列表框並返回選定的ID。 dataValueField不是字符串有問題嗎?MVC ListBoxFor引發「值不能爲空」異常
如果模型中包含的SelectList使用整數作爲dataValueField,那麼當列表呈現在視圖中時,會出現「值不能爲空 - 參數名稱:源」異常。
如果將Id更改爲字符串,則一切正常,並將選定的Id傳回給視圖。
任何想法?
這裏是控制器(基於一個減少新項目)
namespace Mvc2.Controllers
{
public class ViewModel
{
public int TestId { get; set; } // if this is a string it works ok
public SelectList ListData {get; set;}
}
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new ViewModel();
model.TestId = 1; // code corrected after Lazarus' comment
var lst = new[] { new { Id = 1, Name = "cat" }, new { Id = 2, Name = "dog" } };
model.ListData = new SelectList(lst, "Id", "Name");
return View("TestView", model);
}
public ActionResult TestSubmit(ViewModel returnedModel)
{
int i = 99; // break here - returnedModel has correct TestId when declared as string
}
}
}
這裏是視圖 - 將ListBoxFor線
<%using (Html.BeginForm("TestSubmit", "Home")) { %>
<%=Model.TestId %><br />
<%=Html.ListBoxFor(m => m.TestId, Model.ListData) %>
<br />
<input type="submit" value="Save" />
<%} %>
什麼是TestId?你是否在頁面上傳遞並呈現多個選擇? – Lazarus 2010-02-20 08:20:29