複数のフォームを持つビューがあり、それぞれが特定の値を持つ非表示のフィールドを送信し、すべてが同じモデルを共有する必要があります。私のコントローラからは、ビューをレンダリングする前に値を設定しましたが、その値は "Post"メソッドの1つに必要です。他のフィールドは、同じ隠しフィールドを別の値で提出する必要があります。ここで送信前に値を設定するとコントローラに送信されません
私はhiddenInput EventCommand
@using (Html.BeginForm("ContinueWithUpload", "Odometer", FormMethod.Post, new { id = "form2" }))
{
@Html.HiddenFor(m => m.EventCommand)
<div>
<button type="submit" name="upload-excel" value="upload-excel" id="excel-upload" class="btn btn-success">Continue Upload</button>
</div>
}
とビューのちょうど二フォームを表示していますと、これまでのところ、私はJavaScriptでそれを設定しようとしましたが、それは
$(function(){
$("#excel-upload").on("click", function (e) {
$("#EventCommand").val("upload-excel");
});
}
を動作しません。その方法を読んで、ViewDataで解決策を見つけましたが、その回避策でもうまくいきませんでした。
@Html.HiddenFor(m => m.EventCommand)
ViewData["EventCommand"] = "upload-excel"
すべてのヘルプは、あなたが同じid、あなたはボタンをクリックしたときに正しいものを選ぶことができないあなたのコードで複数の隠されたfiledsを持っているよう
値を保存していますか? 'var value = $("#EventCommand ")を試してください。val(" upload-excel ");' – nurdyguy
ここで何をしようとしているのかはっきりしません。なぜ隠し入力の値を設定するスクリプトが必要なのですか?モデルをビューに渡す前に、コントローラの 'EventCommand'プロパティの値を設定するだけです。 –
同じビューの倍数フォームがあるのでできません同じモデルなので、EvenCommandにはコントローラからの値があり、別のモデルでは別のモデルを提出する必要があります – Heinrich