-- C# と MVC の初心者 --
私のViews/Tasks/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 があります。
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 を呼び出します (どういうわけか、parms を渡さずに?)
- ページの更新 (最終的には削除したい) では、ViewBag.Message には何も表示されません。
私の最終目標は... AJAX / JQueryを介してActionLinkがActionResultを呼び出し、「成功」の応答メッセージを表示することです...ページ全体をリロードする必要はありません。
編集
SLaks の応答から、ActionLink を以下のコードに変更しました...そして「return false;」を追加しました。私のJS関数の最後まで。
<td><%:
Html.ActionLink(
HttpUtility.HtmlDecode("+"),
"Insert",
"Tasks",
null,
new { onclick = "InsertTask();" , @class = "ActionButton AddButton" }
)
%></td>
.CS コントローラーの ActionResponse メソッドを呼び出すようになりましたが、受け取ったパラメーターはすべて null です。