动态更新ASP.Net MVC 3中的TextArea

时间:2011-11-24 07:53:33

标签: asp.net-mvc razor textarea

我是ASP.net MVC 3中的新手。我正在尝试做一些微不足道的事情,但我花了一个小时用谷歌搜索它,但无济于事。

我有一个TextArea和2个级联DropDownLists的视图。级联工作正常。现在,每当用户在主dropDownList中进行新选择时,我都想在TextArea中的文本中添加一些文本。

我的textAreaFor声明是这样的:

@Html.TextAreaFor(x => x.MyText)

我设置要在ActionResult方法中附加的文本,该方法实现了从DDL的级联,如下所示:

public ActionResult Methods(int domain)
{
  model.MyText += "TEST";
  return Json((IEnumerable<CMethod>)model.lstMethodNames[domain], 
    JsonRequestBehavior.AllowGet);
}

我显然在这里遗漏了一些东西,但我无法弄清楚是什么。

非常感谢任何帮助。

== UPDATE ==

非常感谢你的回答。

Skuld是对的,我应该包含我的javascript。但它实际上与你发布的那个非常相似(虽然不是纯粹的Ajax)。

现在,我意识到我并没有让自己非常清楚(soo newbie!)。我想要做的是使用从控制器初始化的其他文本来更新我的textarea,具体取决于在主DDL中进行的选择。

假设主DDL列出了大陆,而从DDL列出了所选大陆的国家/地区。根据所选的大陆,我想以几种可能的方式更新我的textarea。

而且,更广泛地说,我希望能够在textarea中添加任何我想要的字符串,例如报告在后台处理的业务逻辑操作的结果,即不依赖于我的下拉列表中的选择更改。

在我的ViewModel中,我有一个

[DataType(DataType.MultilineText)]
public string Feedback { get; set; }

致力于此。

我必须错过这个难题的一部分,或者我可能还没有完全沉浸在MVC 3的概念中。

无论如何,请提前再次感谢您的下一个答案。

1 个答案:

答案 0 :(得分:0)

就像Skuld所暗示的那样,你的javascript代码可能有问题。

你应该有这样的javascript:

//change action for the dropdownlist
$('#ddlSelector').change(function() {
     $.ajax(){
        url: "/controller/action?domain=1", //call to the Methods action
        success: function(){ appendText(); }, // on success call the appendText function
        error: function(){ alert('Error: '+ result.error); } // on failure alert the error
     }
});

//function to append text to the textarea
function appendText(){
   var textArea = $('#selectorTextArea'); //select the textarea to append to
   textArea.val(textArea.val() + " some text to add"); //append text to textarea
}