0

非表示の変数の値がjavascriptで設定されている場合、コントローラーのActionResultの非表示の変数の値にアクセスできますか?

4

2 に答える 2

3

コントローラーにデータを投稿すると、フォームのコンテンツ全体 (隠しフィールドを含む) を投稿できます。非表示フィールドの目的は、データがサーバーに送信されるときではなく、クライアントで非表示にすることです。フォーム データは POST にパッケージ化され、入力方法に関係なくサーバーに送信されるため、JQuery を使用してフィールドに問題なく入力できます...

このフォームを考えると:

<% Html.BeginForm(); %>
  <input type="hidden" id="catID" name="catID" />
<% Html.EndForm(); %>

これをルート パラメータとして処理できます。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DoSomething(string catID)
{
  // Do stuff here...
}

または、 FormCollection インスタンスのアイテムとして:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DoSomething(FormCollection form)
{
  string catID = form["catID"];

  // Do stuff here...
}

または、入力モデルとしても:

public class MyInputModel
{
  public string catID;
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DoSomething(MyInputModel input)
{
  string catID = input.catID;

  // Do stuff here...
}
于 2010-06-23T07:56:20.853 に答える
1

ASP.NET MVC について言及していて、言及している隠し変数が実際にはコントローラーにポストされるフォームの隠しフィールドである場合、答えは「はい」です。

これは、私が作成するアプリでよくあるパターンです。たとえば、人物の詳細を編集しているとします。入力するフォームには、名前、年齢などの可視フィールドが含まれますが、詳細を編集している人物の ID を保持する隠しフィールドも必要です。

これが使用しているシナリオの種類である場合、名前と年齢のフィールドと同じ方法で隠しフィールドをコントローラーで使用できます。

編集:その後のコメントに加えて、javascript 変数を参照しているようです。この場合、これらはコントローラーで直接使用できませんが、変数をフォームに挿入することでこれを調整することができます。

//Javaacript
var myVariable = calculateSomeValue();
$("#myFormField").val(myVariable);
...
//HTML
<form action="..." method="post">
    <input type="hidden" name="myFormField" id="myFormField"/>
    ...
</form>
...
//Controller code
ActionResult MyControllerAction(string myFormField, ...){
    DoSomethingWith(myFormField);
}

これで問題が解決しない場合は、サンプル コードを投稿できますか?

于 2010-06-23T07:55:52.170 に答える