2

私のかみそりのビューでは、を使用していHtml.BeginFormます。その中には、clicを設定するときにフォームを送信する必要があるが、追加の文字列パラメーターを追加する必要がある2つの要素があります。

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
    ...
}

    [HttpPost]
    public ActionResult Index(string parameter, QuizCompletedViewModel q)  //FormCollection f)
    {            
        ...
        if (button.Equals("d"))
        {
            ...
            return RedirectToAction("ShowResults", new { testId = Quiz.QuizId, answeredTest = answeredId });
        }
        else
        {
            ...
            return RedirectToAction("Index", "Dashboard");
        }
    }

したがって、私のjquery関数では、使用$("#element").submit()し、パラメーターparameterは常にnullです(これは正常です)。parameterJQUERYを使用するためのデータを追加するにはどうすればよいですか?

注:私はAJAXを使用していません。

4

3 に答える 3

6

フォームに必要な名前と値を使用して、非表示の入力を追加できます。この値は、他のすべてのフォームアイテムと一緒に送信されます。

<input type="hidden" name="someName" value="someValue" />

コメントのために編集:

各送信ボタンに属性として値を指定すると、クリックハンドラーで値を取得し、フォーム内の値を非表示フィールドに追加できます。何かのようなもの:

$(function(){
   $('#form input[type=submit]').click(function(e) {
       var val = this.getAttribute("data-param");
       $(this).closest('form').append('<input type="hidden" name="param" value="' + val + '" />");
   });
});

テストされていない、ただの予感。ボタンクリックイベントの前にフォーム送信イベントが発生しないことを願っています。また、Enterイベントやキー押下などを処理する必要があります。

なぜajaxを使いたくないのですか?

于 2013-02-06T04:29:17.420 に答える
6

フォームのsumbitで、次のようにしてみてください。

        $("form").submit(function(){
           $.ajax({     
                type: 'POST',  
                url: "/Quiz/Index",
                dataType: "json",
                data: $("form").serialize() + '&parameter=param1' ,   
                success: function () { 
                    alert("Successful"); 
                }
                error: function(){
                    alert('error');
                }

            }); 
        });

それが役に立てば幸い。


編集

jQuery関数で次のようにしてみてください。

$('form').append('&param=a');
于 2013-02-06T04:41:33.673 に答える
4

あなたのコメントに基づいて、あなたがする最も簡単なことはあなたのタイプのボタンを作りそしてsubmitそれらにを与えることnameです。が付いている場合、nameクリックvalueされたボタンのはフォーム投稿とともに自動的に送信されます。「フォームの送信ボタンの値を送信しますか?」を参照してください。

例:

aボタンがクリックされると、parameter値とともに投稿されますa。同様にbcnoneボタンがクリックされた場合、値は送信されず、送信parameterされますnull(デモンストレーションの目的で表示されているため、これは必要ない場合があります)。

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
    ...

    <input type="submit" value="a" name="parameter" />
    <input type="submit" value="b" name="parameter" />
    <input type="submit" value="c" name="parameter" />
    <input type="submit" value="none" />
}
于 2013-02-06T12:49:06.917 に答える