-1

我有这个 Kendo UI 下拉列表,其中包含一个select由 JavaScript 函数处理的事件。

我需要从运行 LINQ 查询的控制器调用操作结果,以在我的页面上填充 Kendo UI 网格。我的问题是我能找到处理这个问题的唯一方法,即使是使用 JavaScript,我也无法弄清楚如何从 JavaScript 事件函数从我的控制器调用我的操作结果。

DropDownList外观是这样的……

@(Html.Kendo().DropDownList()
    .Name("Options")
    .DataTextField("Text")
    .DataValueField("Value")
        .BindTo(new List<SelectListItem>() {
        new SelectListItem() {
            Text = "Policies Not Archived",
            Value = "1"
        },
        new SelectListItem() {
            Text = "View All Policies",
            Value = "2"
        },
        new SelectListItem() {
            Text = "Filter Policies",
            Value = "3"   
        }
    })
    .Events(e => 
    {
        e.Select("select");
    })
)

以及需要调用操作结果的 JavaScript 事件处理程序

function select(e) {

}

并根据选择ActionResult像这样,

public ActionResult ViewAllPolicies()
{
    //mycode
}
4

3 回答 3

2

除了返回 json,您还可以返回 PartialView 并在 .done 函数中抓取一个元素并将其替换为部分视图的结果。PartialView 操作基本上会返回 HTML 片段,因此您可以在页面上的任何位置添加内容:

$.ajax({
        url: urlToPartialViewAction,
        type: 'POST',
        dataType: 'JSON',
        data: '123'
    })
    .done(function (result) {
       $('#someDivPlaceholder').replaceWith(result);        
    });

你可以有一个链接或灰色 div 之类的东西,然后连接到它的点击事件,然后调用它,链接可能会显示“查看收据”,当你点击它时,你调用一个操作,返回带有收据的部分视图,等等当他们单击它时,div/link 被替换为结果。有点像您在社交网站上看到的“查看更多评论”链接。

请注意,您不能单独拥有局部视图,必须通过操作调用它

public PartialViewResult _GetReceipt(string id)
{
   ReceiptViewModel vm = //query for receipt data
   return PartialView(vm);//render partial view and return html fragment
}
于 2013-03-01T18:08:47.970 回答
2

看到这个帖子

var url = '@Url.Action("ViewAllPolicies","YourController")';
    $.ajax({ url: url, success: DataRetrieved, type: 'POST', dataType: 'json' });

在控制器中

public ActionResult ViewAllPolicies()
{
    //Should return json format
}

url – 这是发送请求的 URL。在我的情况下,有一个名为联系人的控制器,它有一个名为 ListPartiesByNameStart() 的操作。此操作方法采用参数 nameStart(个人或公司的首字母)。成功 – 这是处理检索数据的 JavaScript 函数。您也可以在那里编写匿名函数,但我建议您使用带名称的函数,否则当函数增长时您的代码可能会变得混乱。type – 这是请求的类型。它是 GET 或 POST。我建议您使用 POST,因为默认情况下,ASP.NET MVC 禁止使用 JSON 格式的 GET 请求(稍后我将向您展示如何打开对 JSON 返回操作的 GET 请求)。dataType – 这是服务器预期返回的数据格式。如果您不将其分配给 value,则返回的结果将作为字符串处理。如果将其设置为 json,那么 jQuery 会为您构造 JavaScript 对象树,该树对应于从服务器检索到的 JSON。

于 2013-03-01T16:56:35.580 回答
1

函数执行后,您需要对select控制器进行 AJAX 回调。您可以在函数中使用jQuery.ajax()(最常见的AJAX 操作的包装器)select

function select(e) {
    var url = '@Url.Action("ViewAllPolicies", "PolicyController")';
    var selectedPolicy = $('#Options').val(); // The option selected

    $.ajax({
        url: url,
        type: 'POST',
        dataType: 'JSON',
        data: selectedPolicy
    })
    .done(function (data) {
        // Display the data back from you Controller
    });
}

您可以查看剑道网站以获取有关其工作原理的更多信息DropDownList

于 2013-03-01T17:45:58.973 回答