从 PartView MVC3 访问父级的值

本文关键字:访问 PartView MVC3 | 更新日期: 2023-09-27 18:35:46

>我需要保持学生对编辑模式的兴趣有部分视图在哪里两个列表框 - 一个用于当前兴趣,另一个用于可用(未添加到学生个人资料中)每个兴趣都有一个 ajax 操作链接。当我点击它时,它会增加学生当前的兴趣。问题是 - 我需要发送来自父视图(即不是来自部分视图)的学生证,并且学生证在网址中或者 -- 如何在部分视图中访问学生证

代码示例

@model StdMan.Models.Student
@{
    ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="../../../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Project</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.StId)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.StId)
            @Html.ValidationMessageFor(model => model.StId)
        </div>
    <div class="editor-label">
            Intested In              
        </div>
        <div class="editor-field" id="Interest">
          @Html.Action("PartialAddInterest", "Interest")
        </div>  
     </fieldset>
    <p>
            <input type="submit" value="Save" />
        </p>
}
//

/-- 部分视图PartialAddInterest.cshtml

@model IEnumerable<StdMan.Models.Interest>
<table>
@foreach (var item in ViewBag.Added)
{
    <tr>
        <td>@item.Name
            @Ajax.ActionLink("Remove", "RemoveInterest",new { id = item.IsId },
    new AjaxOptions
    {
        UpdateTargetId = "Interest",
        InsertionMode = InsertionMode.Replace,
        HttpMethod = "GET"
    })
        </td>
    </tr>
}
</table>
<table>
@foreach (var item in ViewBag.Rem)
{
    <tr>
        <td>@item.Name
            @Ajax.ActionLink("Add", "AddInterest", new { id = item.IsId },
    new AjaxOptions
    {
        UpdateTargetId = "Interest",
        InsertionMode = InsertionMode.Replace,
        HttpMethod = "GET"
    })
        </td>
    </tr>
}
</table>

我必须通过模型。StId with Ajax Actionlink像@Ajax.ActionLink("Add", "AddInterest", new { id = item.IsId, StId = @Model.StId },

在控制器中

 public ActionResult AddInterest( int id, int StId)
 {
          //logic to add interest in specific student profile depend on StId
 }

从 PartView MVC3 访问父级的值

您可以将学生 ID 传递给PartialAddTool子操作:

@Html.Action("PartialAddTool", "Interest", new { id = Model.StId })

现在控制器操作将具有学生 ID:

public ActionResult PartialAddTool(int stdId)
{
    ...
}

现在剩下的就是让PartialAddTool操作在传递给分部视图的视图模型上设置一些属性。目前,此部分视图似乎强类型化为IEnumerable<StdMan.Models.Interest>,但您可以创建一个具有 2 个属性的新视图模型:学生 ID 和兴趣集合。这样,分部视图将具有学生 ID,并且可以在生成链接以最终传递给 AddInterest 操作时使用它。