如何用两个模型制作创建类型的视图

时间:2016-07-01 15:52:33

标签: c# asp.net-mvc

我有两个模型的视图绑定...所以我选择ViewModel方法将两个模型绑定到一个视图......但是我遇到了创建Create类型视图的问题。 ..但我面临错误... FeedbackMix是ViewModel在这里...我必须传递查询对象以便在布局中显示内容同时我必须创建类型视图页面...
错误:

  

CS1061:' FeedbackMixModel'不包含'消息'的定义没有扩展方法'消息'接受第一个类型为' FeedbackMixModel'可以找到(你错过了使用指令或程序集引用吗?)

控制器

public ActionResult Create()
{
   var msg= db.Messages.ToList();
    var feed = db.Feedbacks.ToList();
    FeedbackMixModel vm = new FeedbackMixModel();
    vm.allfeedbacks = feed;
   //this is also create type view 
    return View(vm);
}

查看

@model WebApplication5.Models.FeedbackMixModel
....
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    ....
    @Html.LabelFor(model => model.Message, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.Message, new { htmlAttributes = new { @class = "form-control" } })
       @Html.ValidationMessageFor(model => model.Message, "", new { @class = "text-danger" })
    </div>
    ....
}

视图模型

public class FeedbackMixModel
{
    public List<UserManager> allUserManagers { get; set; }
    public List<Feedback> allfeedbacks { get; set; }
    public List<Package> allpackages { get; set; }
    public List<Messages> allmessages { get; set; }
}

错误行

  

第16行:@ Html.LabelFor(model =&gt; model.Message,htmlAttributes:new {@class =&#34; control-label col-md-2&#34;})

1 个答案:

答案 0 :(得分:1)

您的FeedbackViewModel名为Message的{​​{1}}上没有您的LabelFor()帮助者所期望的属性,因此它不知道如何绑定此属性:< / p>

public  class FeedbackMixModel
{
    public List<UserManager> allUserManagers { get; set; }
    public List<Feedback> allfeedbacks { get; set; }
    public List<Package> allpackages { get; set; }
    public List<Messages> allmessages { get; set; }

    // No property named Message here
}

如果您想要这样的东西,您需要添加属性并在将其传递给模型之前填充它。

你确定你有一个循环来迭代你的allMessages属性并从这些单独的元素中访问它是不是意味着什么?

<h4>Messages</h4>
<hr />
@foreach(var message in Model.allMessages)
{
    <div class="form-group">
       @Html.LabelFor(message => message.Message, htmlAttributes: new { @class = "control-label col-md-2" })
       <div class="col-md-10">
             @Html.EditorFor(message => message.Message, new { htmlAttributes = new { @class = "form-control" } })
             @Html.ValidationMessageFor(message=> message.Message, "", new { @class = "text-danger" })
        </div>
    </div>
}