我有两个模型的视图绑定...所以我选择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;})
答案 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>
}