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");
}
我有一个视图 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");
}