0

あるアクションからそのビューに、次にビューから別のアクションに1つの値「タブ」を取得するシナリオがあります。ビューでアクセスできるように、タブ値をviewdataに配置しました。ビューでこの「タブ」値にアクセスし、それをアクション「認証」に転送する方法を提案してください。

私はmvc32010に取り組んでいます。以下は私のコードです:

    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");
        }
    }
4

2 に答える 2

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
}
于 2012-06-08T17:01:33.307 に答える
0

TempData、Session、またはcookieを使用するか、タブの値をフォームの非表示フィールドとして追加して、ViewDataを引き続き使用することができます。

于 2012-06-08T16:56:35.847 に答える