【问题标题】:ajax.actionlink calling a controller actionajax.actionlink 调用控制器动作
【发布时间】:2012-06-27 15:54:23
【问题描述】:

如果我正在使用 Ajax.ActionLink 帮助器,并且我需要将几个参数传递给控制器​​操作,我如何获取未绑定到模型的 TextArea 的值?

例如,我希望用户填写一个 textarea,然后单击 Save,将 textarea 值发送到控制器操作以进行进一步处理。

我使用 ViewBag 吗?如果是这样,我如何将 DOM 元素的值分配给 ViewBag?

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-ajax


    【解决方案1】:

    这个问题我以前玩过,你可以通过Ajax.BeginForm来解决它。

    举个例子:

    我有一个模型Person,它是名称的一个字符串属性。

    查看

    @model Application.Models.Person
    
    <fieldset>
        <legend>Form</legend>
        @using (Ajax.BeginForm("SendUp", "Home", new AjaxOptions
        {
            HttpMethod = "POST",
            OnComplete = "window.location.href = 'Index'"
        }))
        {  
            <p>
                @Html.LabelFor(model => model.Name)
                @Html.EditorFor(model => model.Name)
            </p>
            <p>
                @Html.TextArea("ta")
            </p>
            <p>
                <input type="submit" value="Submit" />
            </p>
        }
    </fieldset>
    

    控制器

        [HttpPost]
        public ActionResult SendUp(string Name, string ta)
        {
            string s = ta;
            // Process stuff here
            // Go to another action or whatever
            return RedirectToAction("Index");
        }
    

    使用Ajax.BeginForm() 允许您将数据发送到控制器即使它没有绑定到页面上的模型。您需要确保 Html 元素的 name 属性与控制器所需的参数名称相同。

    所以如果你有

    的控制器方法
    public ActionResult SendUp(string Name, string ta)
    

    您需要在Ajax.BeginForm() 内有一个名为Nameta 的Html 元素。

    为此,您可以写出整个元素:

    <input type="text" id="Name" name="Name" />
    

    或者您可以使用@Html 助手。

    @Html.Editor("Name")
    

    当您为 @Html 帮助程序提供名称时,它将将该值设置为 id 属性和 name 属性。

    【讨论】:

      【解决方案2】:

      ViewBag 是一个服务器端的概念。一旦页面被渲染,它就不存在了。 据我所知,无法以声明方式将页面上的字段与操作参数链接。

      要做你想做的事,你有两个选择: - 摆脱 Ajax.ActionLink 帮助程序,并编写一些 Javascript(抱歉,我无法真正帮助你) - 改为使用 Ajax.BeginForm 并将相关字段放入表单中,以便单击提交按钮将通过 ajax 将表单提交回您的操作。

      【讨论】:

      • @Dennis Troller - 感谢您的帮助。我将使用 js 代替。谢谢
      猜你喜欢
      • 2012-03-13
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2010-09-29
      • 1970-01-01
      相关资源
      最近更新 更多