Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC 4-包含两个模型的详细信息页面_C#_Asp.net Mvc 4 - Fatal编程技术网

C# MVC 4-包含两个模型的详细信息页面

C# MVC 4-包含两个模型的详细信息页面,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在尝试创建一个博客详细信息页面,页面底部有评论。我使用我的“Post”模型作为我评论的一些属性和导航列表属性 我想做的是在页面的最底部创建一个表单来添加新的评论。由于我对评论使用了不同的模型,我很难想出如何创建这样的场景 谢谢你的建议 编辑 下面是一些代码,以便更好地解释: @model Skuami.Models.PostModel @{ ViewBag.Title = Model.Title; } <div class="blogContentBox"> &

我正在尝试创建一个博客详细信息页面,页面底部有评论。我使用我的“Post”模型作为我评论的一些属性和导航列表属性

我想做的是在页面的最底部创建一个表单来添加新的评论。由于我对评论使用了不同的模型,我很难想出如何创建这样的场景

谢谢你的建议

编辑 下面是一些代码,以便更好地解释:

@model Skuami.Models.PostModel
@{
    ViewBag.Title = Model.Title;
}

<div class="blogContentBox">
    <div class="blogImage">
        <img src="@Model.Image" />
    </div>
    <div class="blogContent">
        <div class="blogDate">@Model.CreateDate</div>
        <p class="blogTitle">@Model.Title</p>
        @Model.Content
    </div>
</div>

<p class="commentTitle">
    @Model.Comments.Count @(Model.Comments.Count == 1 ? " comment" : " comments")
</p>

@foreach (var item in Model.Comments)
{
    <div class="commentBox">
        <p class="commentName">@item.Name</p>
        <p class="commentDate">@item.CreateDate</p>
        @item.Message
    </div>
}

<div class="commentBox">
    <p class="commentReply">Leave a Reply</p>

     @using (Html.BeginForm("Details", "Home", FormMethod.Post, new { @class = "CommentModel" }))
    {

        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <fieldset>
            <legend></legend>

            <div class="editor-label">
                @Html.LabelFor(model => model.Comments.Name) <!-- how can I use a 2nd model -->
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name) <!-- how can I use a 2nd model -->
                @Html.ValidationMessageFor(model => model.Name)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Message) <!-- how can I use a 2nd model -->
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Message) <!-- how can I use a 2nd model -->
                @Html.ValidationMessageFor(model => model.Message)
            </div>

            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
     }
</div>
@model Skuami.Models.PostModel
@{
ViewBag.Title=Model.Title;
}
@Model.CreateDate

@Model.Title

@模型.内容

@Model.Comments.Count@(Model.Comments.Count==1?“注释”:“注释”)

@foreach(Model.Comments中的var项) {

@item.Name

@item.CreateDate

@项目.消息 }

留下答复

@使用(Html.BeginForm(“Details”,“Home”,FormMethod.Post,new{@class=“CommentModel”})) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) @LabelFor(model=>model.Comments.Name) @EditorFor(model=>model.Name) @Html.ValidationMessageFor(model=>model.Name) @LabelFor(model=>model.Message) @EditorFor(model=>model.Message) @Html.ValidationMessageFor(model=>model.Message)

}
您使用的是
ViewModel
。基本上,它是所有东西的包装:

public class BlogDetailViewModel {
    public Post Post { get; set; }
    public IList<Comment> Comments { get; set; }
    public Comment NewComment { get; set; }
}
……等等

在控制器中。。您构建它:

return View(new BlogDetailViewModel() { Post = thePostVariable, Comments = getCommentsForPost(), NewComment = new Comment() });

在post上,您的
NewComment
成员将包含新的评论数据。

您使用的是
ViewModel
。基本上,它是所有东西的包装:

public class BlogDetailViewModel {
    public Post Post { get; set; }
    public IList<Comment> Comments { get; set; }
    public Comment NewComment { get; set; }
}
……等等

在控制器中。。您构建它:

return View(new BlogDetailViewModel() { Post = thePostVariable, Comments = getCommentsForPost(), NewComment = new Comment() });
在post上,您的
新成员将包含新的评论数据。

模型

  public class CustomerModel
    {
        public int CustomerId { get; set; }

        public string customerName { get; set; }

        public List<SelectListItem> customerNameList { get; set; }
}



  public class RegisterModel
    {
        public int ID { get; set; }


        public string Name { get; set; }


        public string PhoneNo { get; set; }


        public string Address { get; set; }

        public CustomerModel _Customer { get; set; }


    }
公共类CustomerModel
{
public int CustomerId{get;set;}
公共字符串customerName{get;set;}
公共列表自定义列表{get;set;}
}
公共类注册器模型
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共字符串PhoneNo{get;set;}
公共字符串地址{get;set;}
公共客户模型_客户{get;set;}
}
看法

@model TwoModelInSinglePage.Models.RegisterModel
@{
布局=空;
}
@使用(Html.BeginForm(“Index”,“Content”,FormMethod.Post,new{id=“FrmIndex”}))
{ 
@LabelFor(m=>m.Name)
@Html.TextBoxFor(m=>m.Name)
@Html.ValidationMessageFor(m=>m.Name)

@LabelFor(m=>m.Address) @Html.TextBoxFor(m=>m.Address) @Html.ValidationMessageFor(m=>m.Address)
@LabelFor(m=>m.PhoneNo) @Html.TextBoxFor(m=>m.PhoneNo) @Html.ValidationMessageFor(m=>m.PhoneNo) @LabelFor(m=>m._Customer.customerName) @Html.TextBoxFor(m=>m.\u Customer.customerName) @Html.ValidationMessageFor(m=>m.\u Customer.customerName) }
型号

公共类CustomerModel
{
public int CustomerId{get;set;}
公共字符串customerName{get;set;}
公共列表自定义列表{get;set;}
}
公共类注册器模型
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共字符串PhoneNo{get;set;}
公共字符串地址{get;set;}
公共客户模型_客户{get;set;}
}
看法

@model TwoModelInSinglePage.Models.RegisterModel
@{
布局=空;
}
@使用(Html.BeginForm(“Index”,“Content”,FormMethod.Post,new{id=“FrmIndex”}))
{ 
@LabelFor(m=>m.Name)
@Html.TextBoxFor(m=>m.Name)
@Html.ValidationMessageFor(m=>m.Name)

@LabelFor(m=>m.Address) @Html.TextBoxFor(m=>m.Address) @Html.ValidationMessageFor(m=>m.Address)
@LabelFor(m=>m.PhoneNo) @Html.TextBoxFor(m=>m.PhoneNo) @Html.ValidationMessageFor(m=>m.PhoneNo) @LabelFor(m=>m._Customer.customerName) @Html.TextBoxFor(m=>m.\u Customer.customerName) @Html.ValidationMessageFor(m=>m.\u Customer.customerName) }
使您的评论形成一个局部视图,在某处发布并返回页面,或者使用一些AJAX,这可能是更好的选择,因为它提供了更好的用户体验。

使您的评论形成一个局部视图,在某处发布并返回页面,或者使用一些AJAX,这可能是更好的选择,因为它提供了更好的用户体验。

他的模型已经有了评论,我认为他正在试图找出如何获得帖子数据。回答不错。我想应该有一种方法可以从评论集合中检索它,但这更简单、更直观。谢谢,这是解决问题的好方法。我还试图通过我的帖子模型的评论集合检索数据。他的模型已经有了评论,他正在试图找出如何获取帖子数据,我认为