Asp.net mvc MVC ListBoxFor加薪“;值不能为空";例外
我正在尝试使用Html.listboxforhelper显示列表框并返回所选Id。dataValueField不是字符串是否有问题 如果模型中包含的SelectList使用整数作为dataValueField,则在视图中呈现列表时会引发“Value Can not null-Parameter name:Source”异常 如果Id更改为字符串,则一切正常,所选Id将传递回视图 有什么想法吗 这是控制器(基于精简的新项目) 这是ListBoxFor行上的视图崩溃Asp.net mvc MVC ListBoxFor加薪“;值不能为空";例外,asp.net-mvc,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 2,我正在尝试使用Html.listboxforhelper显示列表框并返回所选Id。dataValueField不是字符串是否有问题 如果模型中包含的SelectList使用整数作为dataValueField,则在视图中呈现列表时会引发“Value Can not null-Parameter name:Source”异常 如果Id更改为字符串,则一切正常,所选Id将传递回视图 有什么想法吗 这是控制器(基于精简的新项目) 这是ListBoxFor行上的视图崩溃 <%using (Html
<%using (Html.BeginForm("TestSubmit", "Home")) { %>
<%=Model.TestId %><br />
<%=Html.ListBoxFor(m => m.TestId, Model.ListData) %>
<br />
<input type="submit" value="Save" />
<%} %>
m、 TestId,Model.ListData)%%>
这是一个。它应该在3月份的版本中修复。回答我自己的问题
有评论说这可能是一个正在等待修复的bug,我对此没有异议,因为我在RC2和MVC1中得到了它(我在该版本中将代码复制回了一个项目)。
无论如何,我现在已经实施了一个变通方法,即:-
(a) 将Id的伪字符串版本添加到模型(TestId)
希望这对您有所帮助。您为所选值传递的表达式需要是IEnumerable,因为ListBoxFor支持多个所选项目。我大约在两天前收到此错误,我有最新版本。(好的,RC 2)。有没有我遗漏的更新版本?没有,但是从您在其他地方的描述来看,您有一个不同的问题(可能在您的代码中,可能在MVC代码中)。此外,我几乎可以肯定,李维描述的bug并没有导致这里的行为。尚未涉及
FormCollection
,并且参数具有不同的名称。您可以查看RC2源代码中的FormCollection.GetValue()
,以确认字符串.IsNullOrEmpty()
确实已消失。我昨天刚刚做了这件事,看到了完全相同的行为。史蒂夫的变通方法对我也很有效。TestId是做什么的?你是否在页面上传递和呈现多个选择?没错。。如果您只想要一个int/id,那么应该使用DropDownListFor
<%using (Html.BeginForm("TestSubmit", "Home")) { %>
<%=Model.TestId %><br />
<%=Html.ListBoxFor(m => m.TestId, Model.ListData) %>
<br />
<input type="submit" value="Save" />
<%} %>
public class ViewModel
{
public string TestId { get; set; } // dummy Id as a string
public List<DataToShow> Data { get; set; }
public SelectList ListData {get; set;}
}
<%=Html.ListBoxFor(m => m.TestId, Model.ListData) %>
public ActionResult TestSubmit(ViewModel returnedModel)
{
MyModel.DataId = Int32.Parse(returnedModel.TestId);