从mvc3中的操作到视图到操作的转发值

时间:2012-06-08 16:54:15

标签: c# asp.net-mvc asp.net-mvc-3 c#-4.0

我有一个场景,我希望从一个动作到其视图,然后从视图到另一个动作获取一个值“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");
        }
    }

2 个答案:

答案 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。