好吧所以我是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)时,它显示如下:
我的问题:
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.js
和microsoft.mvc.ajax.js
。
更新:我设法使用JQuery,看起来非常简单。但是,我真的很想知道在学习MVC之后,Ajax.BeginForm
通常会如何处理这类事情。
答案 0 :(得分:1)
好像你正在使用MVC 3,所以你必须引用不同的脚本。
的jquery-1.4.4.js
jquery.unobtrusive-ajax.js
以
开头似乎没有办法将客户端数据传递给@ Ajax.ActionLink 因此,您可以直接在jQuery的帮助下直接实现查找。