加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ViewModel中的ASP.NET MVC SelectList

发布时间:2020-12-15 22:19:55 所属栏目:asp.Net 来源:网络整理
导读:我在ASP.NET MVC 5中工作(但这很可能也适用于以前的版本).问这个问题的最好方法是向您展示代码: 这是视图模型: public class PersonCreateViewModel{ public SelectList cities {get; set;} public String Name { get; set; } public String Address { get
我在ASP.NET MVC 5中工作(但这很可能也适用于以前的版本).问这个问题的最好方法是向您展示代码:

这是视图模型:

public class PersonCreateViewModel
{
    public SelectList cities {get; set;}
    public String Name { get; set; }
    public String Address { get; set; }

}

这是控制器的http Post方法:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(PersonCreateViewModel viewmodel)
{

    if (ModelState.IsValid)
    {
        //Add to database here and return

    }

    //return back to view if invalid db save
    return View(person);
}

这是视图:

<div class="form-group">
        @Html.LabelFor(model => model.person.name,new { @class = "control-label col-md-2" })
        <div class="col-md-10">
        @Html.EditorFor(model => model.person.name)
        @Html.ValidationMessageFor(model => model.person.name)
    </div>
</div>

<div class="form-group">
        @Html.LabelFor(model => model.person.address,new { @class = "control-label col-md-2" })
        <div class="col-md-10">
        @Html.EditorFor(model => model.person.address)
        @Html.ValidationMessageFor(model => model.person.address)
    </div>
</div>
<div class="form-group">
    @Html.LabelFor(model => model.person.CityID,"CityID",new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("cities")
        @Html.ValidationMessageFor(model => model.person.CityID)
    </div>
</div>

当用户单击“提交”时,浏览器中会显示以下错误消息:
“没有为此对象定义无参数构造函数.”

我认为这与我在ViewModel中有一个SelectList的事实有关.我认为当视图在表单提交时将模型传递回控制器时,它会调用SelectList的构造函数,但是没有SelectList的无参数构造函数.我不知道该怎么办.任何帮助表示赞赏!!

解决方法

我总是使用IEnumerable获得更好的运气
public class PersonCreateViewModel
{
    public IEnumerable<SelectListItem> cities {get; set;}
    public int CityId { get; set; }
    public String Name { get; set; }
    public String Address { get; set; }
}

此外,您将需要视图模型上的属性来捕获选定的值,如CityId.

然后你可以使用:

Html.DropDownListFor(m => m.CityId,Model.cities)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读