[HttpPost]
public JsonResult EditAjax(string companyName, string imageValue) {
// do stuff here
return Json(object);
}
После отправки формы ajax связыватель модели ASP.NET MVC сопоставит параметр POST «imageValue» с параметром метода действия.
Предполагая, что ваши маршруты настроены правильно, следующее должно работать:
public class HomeController {
[HttpPost]
public ActionResult EditAjax(string companyName, string imageValue) {
//companyName == "BuildingCompany"
//imageValue == "The Image source"
}
}
Настройка маршрута должна выглядеть примерно так:
routes.Add(new Route("{companyName}/{action}",
new RouteValueDictionary { { "controller", "Home" } },
new UIRouting()));
Решение Игоря будет работать, если вы используете AJAX для обычной отправки формы, но вы отправляете JSON, поэтому необходим дополнительный шаг.
В библиотеке MVC futures (доступна на CodePlex) есть JSONValueProvider. Загрузите библиотеку и ссылайтесь на Microsoft.Web.Mvc.
В метод Global.asax.cs Application_Start() добавьте строку:
ValueProviderFactories.Factories.Add(new Microsoft.Web.Mvc.JsonValueProviderFactory());
Это позволит вашим методам действий моделировать привязку к JSON, как вы обычно делаете. Возможно, вы уже знаете это, но поскольку вы используете JSON, вы можете вернуть
Json(object)
Который сериализует ваш объект в JSON, отправит правильный content-type и т.д. для вас.