我有一个场景,我希望从一个动作到其视图,然后从视图到另一个动作获取一个值“tab”。我已将viewdata中的tab值设置为可在视图中访问。 请建议如何在视图中访问此“标签”值,然后将其转发到“验证”操作。
我正在开发mvc3 2010.以下是我的代码:
public ActionResult Index(string tab)
{
try
{
ViewData["tab"] = tab;
return View("Authorize");
}
catch (Exception ex)
{
return View("EmptySearch");
}
}
@using (Html.BeginForm("Authenticate", "Authorization"))
{
<div>
<fieldset>
<legend>User Information</legend>
<div class="editor-label">
@Html.Label("Password")
@Html.TextBox("password")
@Html.ValidationMessageFor(m => m.password)
</div>
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
</div>
}
[AcceptVerbs("POST")]
public ActionResult Authenticate(FormCollection collection)
{
try
{
string password = collection["password"];
password = password.Trim();
//ViewData["BatchNumber"] = password;
//dynamicsContext.CommandTimeout = 180;
//List<BatchMember> batchMemberList =
// Queries.compiledBatchQuery(dynamicsContext, password).ToList<BatchMember>();
return RedirectToAction("Index", "GreatPlains");
}
catch (Exception ex)
{
return View("EmptySearch");
}
}
答案 0 :(得分:3)
将其保存在表单的Hidden
字段中,并且可以在您的帖子操作方法中使用
@using (Html.BeginForm("Authenticate", "Authorization"))
{
<div>
<fieldset>
<legend>User Information</legend>
<div class="editor-label">
@Html.Label("Password")
@Html.TextBox("password")
@Html.ValidationMessageFor(m => m.password)
</div>
<p>
@Html.Hidden("Tab", ViewData["tab"])
<input type="submit" value="Submit" />
</p>
</fieldset>
</div>
}
并在您的HttpPOST
行动方法
[HttpPost]
public ActionResult Authenticate(FormCollection collection)
{
var tabValue=collection["Tab"]
//remaining code
}
答案 1 :(得分:0)
您可以使用TempData,Session或cookie,也可以将tab的值添加为表单中的隐藏字段并继续使用ViewData。