Использование MVC3 и ненавязчивого AJAX, передача параметров из элементов управления в набор - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть страница, в ней есть выпадающий список, в котором содержатся названия объектов для редактирования.У меня это работает так, что когда вы выбираете элемент, вызов AJAX загружает текст, и он отображается в текстовой области.Теперь я хочу сделать кнопки «сохранить», «сохранить как» и «удалить», чтобы их собственные вызовы AJAX делали очевидное.Сохранить как нужно будет использовать JQuery, чтобы показать всплывающее окно, чтобы попросить имя для сохранения как.В каждом случае я хочу передать данные, которые находятся в элементах вне формы, на сервер.У меня не может быть всех трех кнопок в разных формах, все содержат текстовую область для передачи текста, и мне нужно выбранное значение из выпадающего списка, которое уже является его собственной формой, вне формы, содержащей текстовую область.Я вижу, как я могу использовать один вызов AJAX и передавать все виды данных, которые нуждаются в разборе, чтобы понять, что я должен с ним делать, но это кажется мне уродливым.Есть ли удобный способ, возможно, с использованием JSON (не обязательно), чтобы я мог передавать значения элементов управления на своей странице, но вне формы, в вызов AJAX?

Так, например, у меня естьэто:

    @using (Ajax.BeginForm(new AjaxOptions 
   {
       Url = Url.Action("GetCoupon"),
       OnSuccess = "OnLoadSuccess"
    }))
    {
           @Html.DropDownList("ddlCoupons", 
          Model.Coupons.Select(a => new SelectListItem { Text = a.Name, Value = a.CouponId.ToString() }), 
          "--Empty--",new{
          onchange = "OnSelectCoupon();"
    });
       <input type="submit" value="Load" id="sbmtCoupon" style="visibility:hidden"/>
   }

Теперь это работает.Но затем у меня есть другая форма AJAX:

@using (Ajax.BeginForm(new AjaxOptions
 {
     Url = Url.Action("SaveCoupon")
 }))
{
    <input type="submit" value="Save" />
}

Я хочу передать выбранный идентификатор выпадающего списка и текст текстовой области этому вызову AJAX.Прямо сейчас я добавляю некоторые скрытые поля и обрабатываю события изменения, чтобы заполнить поля в каждой форме (есть три действия), поэтому они отправляют то, что мне нужно, но я хотел бы просто запустить некоторый javascript для создания значения, передаваемого в, путем поиска значений по форме.

1 Ответ

0 голосов
/ 06 декабря 2011

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

Я предполагаю, что это единственные кнопки на странице, поэтому подключите их к событию click

$("button").click(function(e){
e.preventDefault(); //prevent the default behaviour of the form 
var buttonpPressed = $(this).data("val");  //get which button is pressed
var valueOfField = $("#idOfyourDDL").val();
$.post("/Home/Index",{buttonPressed:buttonPressed,value:valueOfField},function(data){
//this is the callback which will execute upon successful ajax post
alert(data.actionPerformed);
},'josn');
});

[HttpPost]
the ActionResult would look like

public ActionResult(string buttonPressed){

if(buttonPressed=="saveas"){
// perform some action
return Json(new{actionPerformed="saveas"});
}
else{
//perform someother action
return Json(new{actionPerformed="save"});
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...