2

これは私の見解です:

@using (Html.BeginForm())
{
    foreach (Mvc3Intranet.Models.Dispatcher item in ViewBag.DispatcherList)
    {
    <div>
        <input type="text" value="@(item.Fullname)" name="txtName@(item.Id)" data-tmp="@(item.Tmp)" /></div>
    }
    <input type="submit" name="test" value="Save" />
}

これはHTMLです:

<form action="/" method="post">    
    <div>
        <input type="text" value="Ray1" name="txtName1" data-tmp="AAA" /></div>
    <div>
        <input type="text" value="Ray2" name="txtName2" data-tmp="BBB" /></div>
    <div>
        <input type="text" value="Ray3" name="txtName3" data-tmp="CCC" /></div>
    <div>
        <input type="text" value="Ray4" name="txtName4" data-tmp="DDD" /></div>
    <input type="submit" name="test" value="Save" />
</form>

フォームのポストバック後data-tmp、コントローラーの値にアクセスするにはどうすればよいですか?

[HttpPost]
public ActionResult Index(string test)
{
}

Request["txtName1"]validテキストボックスの を返しますが、data-tmp属性値は返しません。これはasp.net Webフォームで実行できるため、asp.net mvcでも同じだと思いますか?

4

2 に答える 2

1

属性は、Request.Forms ディクショナリには含まれていません。追加のデータを隠しフィールドとして、またはクエリ文字列に投稿する必要があります

于 2012-07-27T03:18:14.937 に答える
0

または、data-temp を Array または Dictionary に保存し、それを session-var に保存することもできます。

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("txtName1", "AAA");
dict.Add("txtName2", "BBB");
//or put the above lines in your foreach loop
this.Session["data-tmp"] = dict;

...そして、次の行を使用して、セッション変数から辞書を取得します。

Dictionary<string, string> recoverDict = (Dictionary<string, string>)this.Session["data-tmp"];
于 2012-07-27T03:21:41.853 に答える