可重复使用的ajax编辑器,用于asp.net mvc中的模型不能使用ajax

时间:2010-12-24 08:22:51

标签: asp.net-mvc ajax asp.net-mvc-3 editorfor

好吧所以我是mvc的新手。我正在制作的是一个创建用户表单。 UserViewModel具有类型long的branchcode属性。我想要一个小分支选择器,而不是代码的纯文本框,而是我有一个文本框和一个检查名称链接,当点击时会返回带有一些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)时,它显示如下: alt text

我的问题:

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返回键入的代码。如果您注意到屏幕,则该链接的网址为brcd=0。我想将分支代码发送给控制器!我在编辑器中使用输入按钮尝试BeginRouteForm,但最终提交整个创建页面表单?这是正确的方法吗?

注意:我也在使用T4MVC,最初我忘了,但我确实在创建页面中引用了microsoft.ajax.jsmicrosoft.mvc.ajax.js


更新:我设法使用JQuery,看起来非常简单。但是,我真的很想知道在学习MVC之后,Ajax.BeginForm通常会如何处理这类事情。

1 个答案:

答案 0 :(得分:1)

好像你正在使用MVC 3,所以你必须引用不同的脚本。

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

开头

似乎没有办法将客户端数据传递给@ Ajax.ActionLink 因此,您可以直接在jQuery的帮助下直接实现查找。