1

私のMVC3カミソリビューには、「GetRecords」ボタンが1つあります。このボタンをクリックすると、ポストバックして複数のレコードセットを取得します。レコードセットの数に応じて、ビューを動的に再生成し、各レコードセットを表示します。また、レコードの各セットに対して「保存」ボタンと「削除」ボタンが生成されるため、ユーザーは各レコードセットを確認し、これらのレコード セットのいずれかからデータを「保存」または「削除」できます。

ここでボタンのクリックを処理する方法についての私の質問はこちらです。

[Httppost]
 public ActionResult GetRecords(ContentsViewModel vmodel)
        {
         vmodel.GetRecords();

       return view(vmodel);
     }
4

1 に答える 1

0

何を達成しようとしているのかよくわかりませんが、フォームから複数のボタンを処理したい場合は、ビューで各ボタンに名前を付ける必要があります。例えば:

@using (Html.BeginForm())
{
    ...
    <input type="submit" value="Get Records" name="getrecords"/>
    <input type="submit" value="Save" name="save"/>
    <input type="submit" value="Delete" name="delete"/>
}

次に、以下を使用して、post アクションでこれらの値をテストできます。

[HttpPost]
public ActionResult AppropriateActionNameHere(ContentsViewModel vmodel)
{
    if (!string.IsNullOrEmpty(Request["getrecords"]))
    {
        vmodel.GetRecords();
    }
    else if(!string.IsNullOrEmpty(Request["save"]))
    {
        //save record processing here
    }
    else if(!string.IsNullOrEmpty(Request["delete"]))
    {
        //delete record processing here
    }
    return View(vmodel); //Or perform the appropriate redirect or whatever you need to perform
}

別の可能性は、ビューに複数のフォームを配置し、各フォームが異なるアクションにポストバックすることです。

于 2012-04-29T13:15:08.863 に答える