Динамическое обновление TextArea в ASP.Net MVC 3 - PullRequest
0 голосов
/ 24 ноября 2011

Я новичок в ASP.net MVC 3. Я пытаюсь сделать что-то тривиальное, но я потратил 1 час на поиски, но безрезультатно.

У меня есть это представление с TextArea и 2 каскадными DropDownLists. Каскадирование работает нормально. Теперь я хотел бы добавить некоторый текст к тексту, уже находящемуся в TextArea, всякий раз, когда пользователь делает новый выбор в главном dropDownList.

Моя декларация 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);
}

Я, очевидно, что-то здесь упускаю, но не могу понять, что.

Любая помощь будет принята с благодарностью.

== ОБНОВЛЕНИЕ ==

Большое спасибо, ребята, за ваши ответы.

Скулд был прав, я должен был включить свой JavaScript. Но на самом деле он был очень похож на тот, который вы опубликовали (хотя и не на чистый Ajax).

Теперь, я понимаю, что я не очень-то прояснил (ну, новичок!). Я хотел бы обновить текстовое поле с помощью дополнительного текста, инициализированного с контроллера , в зависимости от выбора, сделанного в основном DDL.

Предположим, что главный DDL перечисляет континенты, а ведомый DDL перечисляет страны с выбранного континента. В зависимости от выбранного континента, я бы хотел обновить текстовую область несколькими возможными способами.

И, в более широком смысле, я хотел бы иметь возможность добавлять любую строку, которую я хочу, к тексту в текстовой области, например, для отчета о результатах операции бизнес-логики, обрабатываемой в фоновом режиме, т.е. не зависящей от изменение выбора в моих выпадающих списках.

В моей ViewModel у меня есть

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

посвященный этому.

Мне, должно быть, не хватает части (ей) головоломки, или, может быть, я еще не полностью пропитан концепциями MVC 3.

В любом случае, еще раз спасибо заранее за ваши следующие ответы.

1 Ответ

0 голосов
/ 24 ноября 2011

Как предполагает Скалд, вероятно, что-то не так в вашем коде 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
}
...