В ASP.NET MVC3 я использую Jquery / Ajax для отправки данных из формы в функцию в моем контроллере.
Проблема, с которой я столкнулся, заключается в том, что когда я помещаю этот код в мое представление Index, он работает нормально, но когда я помещаю тот же код в мое представление CreatePost, я не работаю. Я могу сказать, работает ли он или нет, основываясь на предупреждении и установив точку останова на функцию в контроллере.
Мой контроллер называется BlogController, и вот как выглядит эта функция: (пока это пустая функция)
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult CreateEntry(string title, string body)
{
return Json(false);
}
Код на мой взгляд выглядит так:
<script type="text/javascript">
$(function () {
$(".error").hide();
});
function SubmitEntryPostForm() {
var blogEntry = {
'title': $('#EntryTitle').val(),
'body': $('#EntryBody').val()
};
$.ajax({
type: "POST",
url: "blog/CreateEntry",
data: blogEntry,
success: function () {
alert("it worked");
}
});
return false;
}
function ValidateCreateEntry() {
$(".error").hide();
var title = $("#EntryTitle").val();
if (title == "") {
$("#title_error").show();
$("#EntryTitle").focus();
return false;
}
var body = $("#EntryBody").val();
if (body == "") {
$("#body_error").show();
$("#BodyTitle").focus();
return false;
}
return SubmitEntryPostForm();
}
<div id="CreateEntry">
<form action="">
<fieldset>
<label for="title" id="title_label">Title</label>
<input type="text" name="title" id="EntryTitle" size="30" />
<label class="error" for="title" id="title_error">This field is required.</label>
<br />
<label for="body" id="body_label">Content</label>
<input type="text" name="body" id="EntryBody" size="30" />
<label class="error" for="boby" id="body_error">This field is required.</label>
<br />
<input type="submit" name="submit" class="button" id="CreateEntryButton" value="Send" onclick="return ValidateCreateEntry();" />
</fieldset>
</form>