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>

我在 viewmodel 中有 UIHint 设置,所以当我说 EditFor(model.BranchName) 时,它完美地显示如下: 替代文字

我的问题:

1.没有ajax!当我单击它时,会出现 url:http://localhost:1159/Admin/Home/BranchDetail?brcd=0然后 URL 会抛出错误,因为任何地方都没有 BranchDetailsView。

这是控制器的样子:

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.另一个问题是,我如何让 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 回答