我是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的概念中。
无论如何,请提前再次感谢您的下一个答案。
答案 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
}