0

わかりましたので、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を学んでいるので、この種のことが一般的にどのように行われるかを本当に知りたいです。

4

1 に答える 1

1

MVC 3 を使用しているようですので、別のスクリプトを参照する必要があります。

jquery-1.4.4.js
jquery.unobtrusive-ajax.js

まず始めに

また、クライアント側のデータを @Ajax.ActionLink に渡す方法がないように思われるため、jQuery を少し使用してルックアップの実装に直接ジャンプすることもできます。

于 2010-12-24T08:37:11.440 に答える