わかりましたので、mvcは初めてです。今作っているのは「ユーザーフォームの作成」です。UserViewModel には、タイプ の branchcode プロパティがありlong
ます。コードのプレーンテキストボックスの代わりに、テキストボックスとチェック名のリンクがある小さなブランチセレクターが必要です。クリックすると、ブランチの名前と ajax が返されます。
そこで、ブランチ セレクターを作成し、Shared/EditorTemplates の下に配置しました。こんな感じ
@model long
<div class="editor-label">
Branch ID: @Html.TextBoxFor(model => model)
@Ajax.ActionLink("Get Branch Name", MVC.Admin.Home.BranchDetail(Model),
new AjaxOptions { UpdateTargetId = "BranchName", LoadingElementId = "loading" })
<p id="loading" style="display: none">
Loading...
</p>
</div>
<div id="BranchName" class="editor-field">
</div>
ビューモデルに UIHint を設定しているので、EditFor(model.BranchName) と言うと、次のように完全に表示されます。
私の問題:
1. ajaxがない!クリックすると、URL が表示されます: http://localhost:1159/Admin/Home/BranchDetail?brcd=0そして、BranchDetailsView がどこにもないため、URL はエラーをスローします。
コントローラは次のようになります。
public virtual ActionResult BranchDetail(long brcd)
{
if (Request.IsAjaxRequest())
{
//code to find branch
if (br == null)
{
return Content("No Branch Found");
}
else
{
return Content(br.BranchName + "Circle: " + br.Circle);
}
}
return View();//we should not be here.
}
2.もう 1 つの問題は、AjaxLink がどのコードをどのように入力したかを返すようにするにはどうすればよいかということです。スクリーンショットに気付いた場合、リンクへの URL にはbrcd=0
. 支店コードをコントローラーに送りたい!エディター内の入力ボタンを試しBeginRouteForm
てみましたが、ページ作成フォーム全体を送信してしまいますか? それはこれを行う正しい方法でしょうか?
注:T4MVCも使用しています。最初は忘れていましたが、作成ページでmicrosoft.ajax.js
との両方を参照しました。microsoft.mvc.ajax.js
更新: これを JQuery で動作させることができました。これは非常に素晴らしくシンプルなようです。Ajax.BeginForm
しかし、 MVCを学んでいるので、この種のことが一般的にどのように行われるかを本当に知りたいです。