【问题标题】:How to retrieve values from TextArea in a Local Variable in ASP MVC如何从 ASP MVC 中的局部变量中的 TextArea 检索值
【发布时间】:2013-05-20 22:08:55
【问题描述】:

我正在使用 C# 和 SQL Server 2005 开发一个 ASP .Net MVC 3 应用程序。

在一个视图中,我有 2 个 DropDownList 和 TextArea 以及 2 个按钮:

  • DropDownList Poste
  • 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;

【问题讨论】:

  • FlowViewModel 中是否有任何属性作为要绑定到的文本区域的值。

标签: c# visual-studio-2010 asp.net-mvc-3 textarea


【解决方案1】:

如果您在FlowViewModel 中有任何属性作为要绑定到的文本区域的值,则可以使用它。

如果您有任何名称为S1 的属性,则会自动绑定文本区域的值。

因为在 ASP.Net MVC 中,没有可以参考的服务器端控件。一切都是模型自动绑定的。

否则,您可以创建属性或使用FormCollection 获取值并相应地使用它。

请分享您与此相关的实施以更好地指导。

【讨论】:

  • thx,,,是的,我已经这样做了,它的工作原理,但不是收集但有这样的请求:var value1 = Request["S1"];
  • 现在的问题是当脚本运行时该操作不起作用(不保存在基础中)
  • 你遇到了什么异常。
  • 好的。在这种情况下,您应该在使用 Html.DropDownList 绑定之前从集合中删除该项目。
  • 假设你从控制器中有一个项目集合[删除了重复的主键],你可以用这个集合构建一个SelectList,然后在 ViewData / ViewBag 中设置它,然后你可以调用@ 987654326@ 带有 ViewData 或 ViewBag 的名称。 @Html.DropDownList("SelectedFonction", (IEnumerable&lt;SelectListItem&gt;)ViewData["SelectedFonctions"])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
相关资源
最近更新 更多