Asp.net mvc 当Ajax.ActionLink调用控制器时,ViewModel不存储值

Asp.net mvc 当Ajax.ActionLink调用控制器时,ViewModel不存储值,asp.net-mvc,asp.net-mvc-3,razor,asp.net-mvc-ajax,Asp.net Mvc,Asp.net Mvc 3,Razor,Asp.net Mvc Ajax,当我单击ActionLink并在控制器中设置ViewModel值时,我可以在渲染视图时看到更改。但当我第二次单击ActionLink时,相同的值在控制器中显示为null 如何存储该值,使其进入控制器 视图: 部分视图\u可更新内容: @Html.HiddenFor(x => x.A) @if (Model.A == "A") { //Draw } 尝试将此.Model添加到ActionLink中,如下所示: @Ajax.ActionLink("Click me", "Ajax

当我单击ActionLink并在控制器中设置ViewModel值时,我可以在渲染视图时看到更改。但当我第二次单击ActionLink时,相同的值在控制器中显示为null

如何存储该值,使其进入控制器

视图:

部分视图\u可更新内容:

@Html.HiddenFor(x => x.A)

@if (Model.A == "A")
{ 
    //Draw
}

尝试将此.Model添加到ActionLink中,如下所示:

@Ajax.ActionLink("Click me", "AjaxTest", "Controller", this.Model, new AjaxOptions() { UpdateTargetId = "updatePanel" })
此方法将模型传递回请求,请求应允许更新发生

我对ASP.NET MVC最大的不满可能是各种“助手”函数被重载到了第n级,而且参数出现的顺序并不总是一致的


希望有帮助:)

我也有同样的问题。在
AjaxOptions
中设置
HttpMethod=“Post”
为我修复了它,谢谢

我的最终工作代码如下

@{
    AjaxOptions ajaxOptions = new AjaxOptions
    {
        HttpMethod = "Post",
        LoadingElementId = "product-adding-" +@Model.Product.Id,
        LoadingElementDuration = 100,
        OnSuccess = "AddedToCart"
    };
}
<div>
    @Ajax.ActionLink("Add to cart",
        "AddToCart",
        "Cart",
        new { id = Model.Product.Id, returnUrl = Request.Url.PathAndQuery },
        ajaxOptions,
        new { @class = "button" })
<img id="product-adding-@Model.Product.Id" src="~/Images/ajax_loader.gif" />
</div>
@{
AjaxOptions AjaxOptions=新的AjaxOptions
{
HttpMethod=“Post”,
LoadingElementId=“产品添加-”+@Model.product.Id,
加载元素持续时间=100,
OnSuccess=“AddedToCart”
};
}
@ActionLink(“添加到购物车”,
“AddToCart”,
“购物车”,
新的{id=Model.Product.id,returnUrl=Request.Url.PathAndQuery},
选择,
新建{@class=“button”})

你好,谢谢。添加了这个。模型和动作不再被击中。也许我必须以某种方式改变操作方法?已执行操作:public ViewResult AjaxTest(MyViewModel model)-仍然没有命中。我可以看到生成的链接,它包含视图模型中每个属性的查询字符串参数,我认为Action方法应该包含每个属性的参数?不,我一定是遗漏了某个步骤。我会有一个剧本,然后再打给你。在AjaxOptions中添加了HttpMethod=“POST”,并为我的动作方法添加了属性[AcceptVerbs(HttpVerbs.POST)]。现在似乎在工作。不知道为什么,但不再工作了。修改了原始消息,如果您有时间pelase,可以快速查看一下吗?看起来您正试图通过GET请求传递模型对象。你不能那样做。
@Ajax.ActionLink("Click me", "AjaxTest", "Controller", this.Model, new AjaxOptions() { UpdateTargetId = "updatePanel" })
@{
    AjaxOptions ajaxOptions = new AjaxOptions
    {
        HttpMethod = "Post",
        LoadingElementId = "product-adding-" +@Model.Product.Id,
        LoadingElementDuration = 100,
        OnSuccess = "AddedToCart"
    };
}
<div>
    @Ajax.ActionLink("Add to cart",
        "AddToCart",
        "Cart",
        new { id = Model.Product.Id, returnUrl = Request.Url.PathAndQuery },
        ajaxOptions,
        new { @class = "button" })
<img id="product-adding-@Model.Product.Id" src="~/Images/ajax_loader.gif" />
</div>