Я новичок в 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.
В любом случае, еще раз спасибо заранее за ваши следующие ответы.