我试图将参数传递给局部视图。该视图将创建一个新的post对象,id就像传递一个paramater来使用它。这可能吗?我已经看到了传递视图数据字典的同时想要解决它买不知道如何使用它。
部分查看电话
@Html.Partial("_AddPost", new S.Models.Post())
_addpost
@model S.Models.Post
<h2>Create</h2>
`
@using (Ajax.BeginForm("CreatePost", "Wall", new AjaxOptions
{
HttpMethod = "post",
InsertionMode = System.Web.Mvc.Ajax.InsertionMode.InsertAfter,
UpdateTargetId = "newStatus"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Post</legend>
<div class="editor-label">
</div>
<div class="editor-field">
@Html.HiddenFor(model => model.wallName, new { Value = //data i want passed from main view })
@Html.HiddenFor(model => model.Username, new { Value = User.Identity.Name })
</div>
<div class="editor-label">
@Html.LabelFor(model => model.PostContent)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PostContent)
@Html.ValidationMessageFor(model => model.PostContent)
</div>
@{
TempData["returnURL"] = Request.Url.AbsoluteUri;
}
<p>
<input type="submit" id="postStatus" value="Create" />
</p>
</fieldset>
}
答案 0 :(得分:2)
由于值来自主视图模型,并且您从主视图调用partial,因此在调用新的S.Models.Post时,只需在构造函数中设置模型对象的值。
@Html.Partial("_AddPost", new S.Models.Post({wallPost = model.Value}))
如果主视图中的ViewData或ViewBag中有项目,您还可以通过添加第三个参数将这些项目传递给部分
@Html.Partial("_AddPost", new S.Models.Post(), ViewData)