【发布时间】:2014-08-29 18:22:36
【问题描述】:
这是我尝试解决这个问题的第五天。
我尝试通过 Razor 视图中的按钮调用方法,不重定向到其他视图,只需在单击按钮时调用一个简单的方法。
脚本如下:
<script>
function SubmitClick () {
var pid = $(this).data('personid');
var sid = $(this).data('surveyid');
var url = '@Url.Action("SubmitSurvey", "Person")';
$.post(url, { personid: pid, surveyid: sid }, function (data) {
alert('updated');
});
};
</script>
按钮看起来像:
<button class='mybutton' type='button' data-personid="@Model.Item1.Id" data-surveyid="@survey.Id" onclick="javascript:SubmitClick()">Click Me</button>
PersonController 方法如下所示:
public void SubmitSurvey(int personId, int surveyId) {
System.Diagnostics.Debug.WriteLine("UPDATING DATABASE");
}
完整视图(这是PartialView):
<script>
function SubmitClick () {
var pid = $(this).data('personid');
var sid = $(this).data('surveyid');
var url = '@Url.Action("SubmitSurvey", "Person")';
$.post(url, { personid: pid, surveyid: sid }, function (data) {
alert('updated');
});
};
</script>
@using WebApplication2.Models
@model System.Tuple<Person, List<Survey>>
<hr />
<h1>Surveys</h1>
<input type="button" id="Coll" value="Collapse" onclick="javascript:CollapseDiv()" />
@*<p>
Number of Surveys: @Html.DisplayFor(x => Model.Item2.Count)
</p>*@
@{int i = 1;}
@foreach (var survey in Model.Item2) {
using (Html.BeginForm()) {
<h2>Survey @(i)</h2>
<p />
@Html.EditorFor(x => survey.Questions)
<button class='mybutton' type='button' data-personid="@Model.Item1.Id" data-surveyid="@survey.Id" onclick="javascript:SubmitClick()">Click Me</button>
}
i++;
<hr style="background-color:rgb(126, 126, 126);height: 5px" />
}
<hr />
问题是当我点击按钮时:
我收到运行时错误,说没有定义:"SubmitClick"。
【问题讨论】:
-
出于好奇,您有 jQuery,那么为什么要像 1999 年那样直接在 HTML 元素上编写事件?
-
你能把视图生成的整个HTML贴出来吗?
-
@ErikPhilips 我不知道我尝试了很多方法来解决这个问题。其中一些没有给出任何结果(没有错误,也没有发生任何事情),所以没有调用 jquery 函数。在这里,我收到一条错误消息。你能建议如何解决这个问题,我真的厌倦了这个
-
@ErikPhilips 我试过了:wklej.org/id/1452605 就像 Stephen Muecke 说的,但什么也没发生。
标签: javascript jquery .net asp.net-mvc razor