MVC5 JavaScriptResult 使用紀錄
MVC5 JavaScriptResult 使用紀錄。
參考
原始碼紀錄
namespace YourProject.Controllers
{
public class FooController : Controller
{
public ActionResult Edit(string id)
{
var model = ...
return View(model);
}
[HttpPost]
public JavaScriptResult GetAddress(string addressType)
{
string addr1, addr2, addr3;
_biz.GetAddress(addressType, out addr1, out addr2, out addr3);
// addr1 = "新北市中和區";
// addr2 = "連城路999號";
// addr3 = "99樓";
//※ 將會呼叫前端的 handleGetAddress 函式。
string theJs = $@"handleGetAddress('{addr1}', '{addr2}', '{addr3}');";
return JavaScript(theJs);
}
}
}
@model YourModel
<h2>Edit</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div>
<div>
<h6>郵寄地址選取</h6>
//※ 將由經由後端 Controller 的 GetAddress Action 取得地址資料。
@Ajax.ActionLink("戶籍", "GetAddress", new { addressType = "戶籍" },
new AjaxOptions {
HttpMethod = "Post"
//※ 注意:此時不必指定 UpdateTargetId
// <--- JavaScriptResult 不需要 UpdateTargetId
})
@Ajax.ActionLink("通訊", "GetAddress", new { addressType = "通訊" },
new AjaxOptions {
HttpMethod = "Post"
})
@Ajax.ActionLink("公司", "GetAddress", new { addressType = "公司" },
new AjaxOptions {
HttpMethod = "Post"
})
</div>
<div class="row" id="">
@Html.EditorFor(m => m.addr1, "TextField")
@Html.EditorFor(m => m.addr2, "TextField")
@Html.EditorFor(m => m.addr3, "TextField")
</div>
<div class="text-center">
<input type="submit" value="存檔" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script>
//※將由 Response 回來的 JavaScriptResult 驅動此函式。
function handleGetAddress(addr1, addr2, addr3) {
console.log('handleGetAddress', { addr1, addr2, addr3 });
$('#addr1').val(addr1); // 寫入查詢結果
$('#addr2').val(addr2);
$('#addr3').val(addr3);
}
</script>
}
(EOF)
Last updated