如何通过jQuery MVC4呈现MVC Custom Helper

时间:2014-08-16 14:32:49

标签: jquery asp.net-mvc-4 html-helper

我想将jQuery对象(List)传递给MVC4自定义HTML Helper。

我的观点是这样的:

<script type="text/javascript">
$(document).ready(function () {
    var datafilterList = GetDataFilter('@Url.Action("GetJsonDataFilter")'); // this is external file ajax call and I am getting the data pulled from controller. all ok here.
    @Html.DataFilterFor(datafilterList) // how to pass datafilterList and call custom helper??
});
</script>

我的助手班:

public static class DataFilter
{
    public static MvcHtmlString DataFilterFor(this HtmlHelper html, List<View_webpages_DataFilter> DataFilterList)
    {
        StringBuilder sb = new StringBuilder();
        // TODO: Create the form and render html - I removed the unnecessary html code
        return new MvcHtmlString(sb.ToString());
    }
}

请任何人告诉我如何将jquery对象datafilterList传递给mvc自定义助手?

谢谢

1 个答案:

答案 0 :(得分:3)

你不能。创建视图时以及在将视图发送到浏览器之前,Razor代码(帮助程序)在服务器上运行。 Javascript在浏览器上运行,并没有html帮助程序的概念。

即使理论上这是可能的,你正在做的是将一个页面发送到服务器,然后oops!,我忘记了一些数据,所以回到服务器并返回它,然后再次oops,我真正想要的是一些HTML,所以回到服务器并返回它。为什么所有这些往返旅行时,你可以在创建页面时完成一次。

或者:

  1. 获取GetDataFilter()中返回的数据 您用于生成此视图并呈现的动作方法 html(直接在他查看或调用子动作包括 部分观点);或者如果您更喜欢AJAX

  2. GetJsonDataFilter()函数返回您想要的html(或调用 另一个返回html的方法然后成功 功能,将HTML添加到DOM