mvc - 如何从其父视图中将值分配给局部视图 属性

mvc - How to assign a value to a partial view property from withing its parent view

我有一个视图 A、一个视图 B 和一个视图 _C。

视图 _C 是在视图 A 和 B 内部呈现的局部视图:

视图A:

<div style="margin-top:20px;">

    <div>
        @Html.Partial("~/Views/_C.cshtml", null, new ViewDataDictionary { { "WithRedirect", "true" } });
    </div>

</div>

视图 B

<div style="margin-top:20px;">

    <div>
        @Html.Partial("~/Views/_C.cshtml", null, new ViewDataDictionary { { "WithRedirect", "false" } });
    </div>

</div>

视图C(局部视图)-代码片段:

.
.

<td style="padding-bottom: 8px;">
   @Html.EditorFor(model => model.CurrentPassword, new { htmlAttributes = new { @class = "form-control k-textbox checkError", placeholder = "Enter current password" } })
</td> 
.
.

渲染局部视图时,我需要设置一个标志"WithRedirect"以便稍后在控制器中引用它来决定是否需要重定向到另一个视图:

string withRedirect = this.ViewData.ContainsKey("WithRedirect") ? this.ViewData["WithRedirect"].ToString() : string.Empty;

if(WithRedirect.Equals("true") return 重定向(returnUrl ?? Url.Action("Index", "Page1")); 别的 return 重定向(returnUrl ?? Url.Action("Index", "Page2"));

调试控制器时,WithRedirect变量为空字符串。

我做错了什么,解决方法是什么?

在您的部分视图 (_C.cshtml) 中,您可以从 ViewDataDictionary 中读取值并设置为 form 中的输入字段。当您提交表单时,该值也将被提交。你可以在你的 http post 操作方法中有一个参数,它将接收这个输入字段值并使用它你可以有条件地重定向到第 1 页或第 2 页。

@model LoginViewModel
@using (Html.BeginForm("Login","Home")) 
{
    <input type="hidden" name="withRedirect" value="@ViewData["WithRedirect"]" />
    @Html.LabelFor(f=>f.Password)
    @Html.TextBoxFor(x=>x.Password )
    <input type="submit" />
}

现在在您的操作方法中

[HttpPost]
public ActionResult Login (LoginViewModel model,bool withRedirect)
{
   //to do : Do something
   if(withRedirect)
   {
      return RedirectToAction("Index","Page1"); 
   } 
   return RedirectToAction("Index","Page2"); 
}