--Очень новичок в C# и MVC--
В моих представлениях/задачах/Index.aspx у меня есть следующая строка/ячейки, заключенные в таблицу
<tr>
<td><%:
Html.ActionLink(
HttpUtility.HtmlDecode("+"),
"Insert",
"Tasks",
new { onclick = "InsertTask();" },
new { @class = "ActionButton AddButton" }
)
%></td>
<td><input type="text" id="txtAddName" style="width: 200px;" /></td>
<td><input type="text" id="txtAddDescription" style="width: 400px;"/></td>
<td><input type="text" id="txtAddStarting" style="width: 200px;" /></td>
<td><input type="text" id="txtAddEnding" style="width: 200px;" /></td>
</tr>
А также в том же файле у меня есть
<% if (ViewBag.Message != null) { %>
<%: ViewBag.Message %>
<% } %>
<script type="text/javascript">
function InsertTask() {
var name = $('#txtAddName').val();
var desc = $('#txtAddDescription').val();
var starting = $('#txtAddStarting').val();
var ending = $('#txtAddEnding').val();
$.ajax({
url: "Insert/" + name + "," + desc + "," + starting + "," + ending,
context: document.body
}).done(function () {
alert("done!");
});
}
</script>
В моем файле Controllers/TasksController.cs у меня есть следующие ActionResult(s)
public ActionResult Index()
{
//Create an array of tasks
//Place task objects into variable tasks
//Create the view model
TaskIndexViewModel tivm = new TaskIndexViewModel
{
NumberOfTasks = tasks.Count(),
Tasks = tasks
};
//Pass the view model to the view method
return View(tivm);
}
public ActionResult Insert(string Name, string Description, String Starting, String Ending)
{
//Insert records to DB
//Notify
ViewBag.Message = "Insert Successful";
//Return success
return RedirectToAction("Index");
}
Когда я нажимаю на элемент ActionLink, он
- Не вызывает функцию JS
- Вызывает ли Insert ActionResult (как-то даже без передачи параметров?)
- Обновление страницы (от которого я в конечном итоге хочу избавиться) ничего не показывает для ViewBag.Message
Моя конечная цель... состоит в том, чтобы ActionLink вызывал ActionResult через AJAX/JQuery и отображал ответное сообщение "Успех"... без полной перезагрузки страницы.
ИЗМЕНИТЬ
Из ответа SLaks я изменил свой ActionLink на приведенный ниже код... И добавил «return false;» до конца моей функции JS.
<td><%:
Html.ActionLink(
HttpUtility.HtmlDecode("+"),
"Insert",
"Tasks",
null,
new { onclick = "InsertTask();" , @class = "ActionButton AddButton" }
)
%></td>
Теперь он вызывает метод ActionResponse контроллера .CS... но все полученные параметры пусты.
+
в своем исходном коде вместо вызоваHtmlDecode
. - person SLaks   schedule 30.05.2013+
. Вам не нужны escape-последовательности HTML в C#; вы можете просто написать"+"
. - person SLaks   schedule 30.05.2013