好的,所以我是 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 以来,这种事情通常会如何完成。