Asp.net MVC 2: Может ли Ajax.ActionLink передать параметр, не заходя в URL? - PullRequest
1 голос
/ 24 января 2010

У меня есть следующее в частичном представлении

<%= Ajax.ActionLink("Plunder Again", "Resources", new { controller = "Resource", parent = Model.ToJson() }, new AjaxOptions { UpdateTargetId = Model.ResourceType })%>

идущий к контроллеру метод:

    public ViewResult Resources(/*ModelResource parent*/)
    {
        Debug.Assert(Request.Params["parent"]!=null);
        var jss=new System.Web.Script.Serialization.JavaScriptSerializer();
        var parent=jss.Deserialize<ModelResource>(Request.Params["parent"]);
        return View(parent.PlunderAmount);
    }

но выдает исключение, потому что json не проходит должным образом через URL, он не может найти параметр 'Type'.

Я попытался просто указать ModelResource в качестве параметра для действия, но он получил значение null

Это действие также будет возвращать частичное представление, если это имеет какое-либо значение.

Ответы [ 2 ]

0 голосов
/ 24 января 2010

Если вы хотите отправить модель на контроллер вместо Ajax.ActionLink, используйте Ajax.BeginForm

0 голосов
/ 24 января 2010

ActionLink используется для создания привязки к URL - URL должен быть действительным! В общем случае вы не передаете весь объект в действие, потому что значения маршрута должны быть связаны обратно в модель и переданы действию. Однако вы можете передать идентификатор объекта, чтобы Action мог получить объект с помощью этого ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...