如何仅使用JavaScript调用MVC动作
本文关键字:MVC 动作 调用 JavaScript 何仅使 | 更新日期: 2023-09-27 18:01:41
我有这个剑道UI下拉列表与select
事件是由JavaScript函数处理。
我需要从运行LINQ查询的控制器调用一个操作结果来填充我的页面上的剑道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
}
看这篇文章
var url = '@Url.Action("ViewAllPolicies","YourController")';
$.ajax({ url: url, success: DataRetrieved, type: 'POST', dataType: 'json' });
在控制器public ActionResult ViewAllPolicies()
{
//Should return json format
}
url -这是发送请求的url。对我来说是有的控制器叫contacts,它有动作调用ListPartiesByNameStart()。这个动作方法接受参数姓名起始(个人或公司的首字母)。成功——这就是成功处理检索数据的JavaScript函数。你可以在这里写也是匿名函数,但我建议你使用有名称的函数否则,当函数增长时,代码可能会变得混乱。类型,这是请求的类型。它不是GET就是POST。我建议你使用POST,因为JSON格式的GET请求被禁止ASP。. NET MVC(稍后我将向您展示如何打开GET)请求到JSON返回操作)。dataType——这是数据服务器期望返回的格式。如果你不分配它的值,然后返回的结果作为字符串处理。如果你设置它然后jQuery构建JavaScript对象树对应于从服务器检索到的JSON。
除了返回json,您还可以返回一个PartialView,并在.done函数中获取一个元素,并用部分视图的结果替换它。PartialView操作基本上返回一个HTML片段,所以你可以把它放在页面上任何你想要的地方:
$.ajax({
url: urlToPartialViewAction,
type: 'POST',
dataType: 'JSON',
data: '123'
})
.done(function (result) {
$('#someDivPlaceholder').replaceWith(result);
});
你可以有一个链接或灰色div连接到它的click事件然后调用这个,链接可能会说"View Receipt"当你点击它时你调用一个返回带有收据的部分视图的动作,当他们点击它div/链接被结果取代。有点像你在社交网站上看到的"查看更多评论"链接。
注意你不能单独拥有一个局部视图,它必须通过一个动作
来调用public PartialViewResult _GetReceipt(string id)
{
ReceiptViewModel vm = //query for receipt data
return PartialView(vm);//render partial view and return html fragment
}
执行select
函数后,需要对控制器进行AJAX回调。您可以在select
函数
jQuery.ajax()
(用于最常见AJAX操作的包装器)。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
如何工作的信息