0

C# と SQL Server 2005 を使用して ASP .Net MVC 3 アプリケーションを開発しています。

ビューには、2 つの DropDownList と TextArea と 2 つのボタンがあります。

  • DropDownList 投稿
  • DropDownList 関数
  • ボタンアジョター
  • ボタン登録者
  • テキストエリア

「Ajouter」ボタンをクリックすると、TextArea の値が DropDownList の「Fonction」から追加されます。

これらの値をローカル変数で取得したいと考えています。そして、ユーザーがボタン「登録者」(提出)をクリックしたとき。

これはビューのコードです:

<% using (Html.BeginForm("Store", "Fonction")) { %>
<h2>Gérer les droits</h2>
 <form id="form1" runat="server">
<fieldset><legend>Gestion</legend>

        <div>
        <%:Html.Label("Poste :")%><%: Html.DropDownListFor(model => model.SelectedPoste, Model.PostesItems)%>
        </div>
        <br />
        <div>
        <%:Html.Label("Fonction :")%><%: Html.DropDownListFor(model => model.SelectedFonction, Model.FoncItems, new { @id = "ff" })%>
        </div>
        <br />
        <div><input type="button" value="Ajouter" id="aj"  onclick="addtext()"/></div>
        <br />
        <div>
        <textarea id="tt" cols="10"  name="S1" rows="8" readonly="true"></textarea>
        </div>
</fieldset>
<br />
<div><input type="submit" value="Enregistrer" id="sv" /></div>
</form>

<script language="javascript" type="text/javascript">
    var storedValues = [];
    function addtext() {

        var ff = document.getElementById('ff');
        var tt = document.getElementById('tt');


        var selectedValue = ff.options[ff.selectedIndex].value + " ";
        if (storedValues.indexOf(selectedValue) === -1) {
            storedValues.push(selectedValue)
            tt.value = storedValues.join('')
        }

    }
</script>

そして、これはコントローラーのメソッドストア(送信用)のコードです:

 [HttpPost]
        public ActionResult Store(FlowViewModel model)
        {

            if (ModelState.IsValid)
            {

                Fonction_Poste FP = new Fonction_Poste();
                FP.ID_Poste = model.SelectedPoste;
                FP.ID_Fonction = model.SelectedFonction;
                FP.Droit = 1;

                System.Web.UI.HtmlControls.HtmlTextArea htaDemo = (System.Web.UI.HtmlControls.HtmlTextArea)(form1.FindControl("tt"));
                String Value = htaDemo.Value;

                db.Fonction_Postes.Add(FP);
                db.SaveChanges();

            }
            return RedirectToAction("Index");
        }

ご覧のとおり、このステートメントを使用して値を取得しようとしましたが、結果は得られませんでした。

System.Web.UI.HtmlControls.HtmlTextArea htaDemo = (System.Web.UI.HtmlControls.HtmlTextArea)(form1.FindControl("tt"));
            String Value = htaDemo.Value;
4

1 に答える 1

1

FlowViewModelバインドするテキスト領域の値のプロパティが にある場合は、それを使用できます。

name のプロパティがある場合S1、テキスト領域の値は自動的にバインドされます。

ASP.Net MVC には、参照できるサーバー側のコントロールがないためです。すべてが自動的にモデルにバインドされます。

それ以外の場合は、プロパティを作成するか、 を使用しFormCollectionて値を取得し、それに応じて使用することができます。

より良いガイドのために、これに関連する実装を共有してください。

于 2013-05-25T17:39:20.177 に答える