Ajax.ActionLink从视图中发布整个模型?

use*_*794 7 c# asp.net-mvc entity-framework razor asp.net-mvc-3

我有一个强烈键入ViewModel的视图.是否可以从视图中的模型传递所有数据,返回到控制器操作?像这样的东西?

@Ajax.ActionLink("(Export to Excel)", "ExportCsv", "SurveyResponse", new {  
ResultsViewModel = Model }, new AjaxOptions {HttpMethod = "POST"})
Run Code Online (Sandbox Code Playgroud)

然后从ResultsViewModel收集数据作为另一个控制器中的参数

public ActionResult ExportCsv(ResultsViewModel resultsviewmodel)
{

}
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 4

不,您不能在操作链接中像这样传递整个视图模型。您可以仅传递此模型的,然后使用它从最初检索它的位置id检索实际模型:id

@Ajax.ActionLink(
    "(Export to Excel)", 
    "ExportCsv", 
    "SurveyResponse", 
    new { id = Model.Id }, 
    new AjaxOptions { HttpMethod = "POST" }
)
Run Code Online (Sandbox Code Playgroud)

作为替代方案,您可以将模型序列化为 javascript 文字,然后使用 AJAX 请求将其作为 JSON 数据发送:

@Html.ActionLink(
    "(Export to Excel)", 
    "ExportCsv", 
    "SurveyResponse", 
    null, 
    new { @class = "exportCsv" }
)
<script type="text/javascript">
    $('.exportCsv').click(function() {
        var model = @Html.Raw(Json.Encode(Model));
        $.ajax({
            url: this.href,
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(model),
            success: function(result) {

            }
        });
        return false;
    });
</script>
Run Code Online (Sandbox Code Playgroud)