我有javascript函数,当单击Kendo.Button()
时,它将从几页调用。
这是一个Kendo.Button()
:
@(Html.Kendo().Button()
.Name("btnSubmit")
.HtmlAttributes(new { type = "button", title= "Report1", url = "/Controller1/Method1/" })
.Icon("k-icon k-i-file-txt")
.Content("View Details")
.Events(e => e.Click("ShowDetails"))
)
此按钮将具有.HtmlAttribute
属性中定义的不同数量的参数,具体取决于页面。一个页面将有 3 个参数,另一个页面将只有一个参数。
单击任一页面上的按钮时,将调用以下javascript
:
这是我JavaScript
:
function ShowDetails() {
var URL = this.element.attr("url")
$('#win_wnd_title').text(this.element.attr("title"));
$.ajax(
{
url: URL,
type: 'post',
dataType: "html",
data: ?
contentType: 'application/json; charset=utf-8',
success: function (result) {
var dialog = $("#win").data("kendoWindow");
$("#dataWin").html(result);
dialog.open();
showLoaderPopup();
}
})
}
我需要动态设置data
属性,因此当从一个页面调用函数时,我不需要设置参数来data
属性。在另一种情况下,我需要这样做。因此,函数中将类似:
If (flag == 1)
{
var myData = JSON.stringify({ ID: id, Amount: amount, Desc: desc });
}
else
{
var myData = null
}
然后在函数中,我为 Ajax 请求设置了data
属性:
$.ajax(
{
.
.
.
data: myData
}
)
因此,只有在特定的按钮上,才会发送参数。
我该怎么做,所以我不会重复相同的 Ajax 逻辑两次只是为了更改data
参数?
我会发表评论,但是我没有足够的声誉。
我会像你描述的那样接近它。我会向按钮添加另一个参数:
Button()
.Name("btnSubmit")
.HtmlAttributes(new { type = "button", title= "Report1", url = "/Controller1/Method1/", sendData = "true" })
.Icon("k-icon k-i-file-txt")
.Content("View Details")
.Events(e => e.Click("ShowDetails"))
)
然后使用基于该 html 参数的数据创建局部变量。 像这样:
function ShowDetails() {
var URL = $(sender).data('url');
var myData = null;
if($(sender).data('sendData') == "true")
{
myData = JSON.stringify({ ID: id, Amount: amount, Desc: desc });
}
$.ajax(
{
...
data: myData
success: function (result) {
...
}
})
希望对你有帮助