ASP.NET MVC3通过Ajax链接在主视图和搜索视图之间传递数据

时间:2012-06-05 13:52:10

标签: asp.net-mvc-3

我刚开始学习ASP.NET MVC3。

我有以下情况。在某个模型的创建视图中,用户可以通过单击链接(使用Html.ActionLink帮助程序呈现)来查找代码/描述。查找值从数据库中的查找表中检索,并在单独的视图中显示。这两个视图由两个不同的控制器处理。当用户在后一个​​视图中选择查找值时,应将值(代码+描述)复制回创建视图。

如何在两个视图之间传递数据?由于Http请求的无状态特性,这是不可能的吗?

我尝试使用Ajax链接,但它没有成功。

code snippet创建视图:

<fieldset>
    <legend>Z-Info</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.ZZL_U_CODE)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.ZZL_U_CODE)
        @Html.ValidationMessageFor(model => model.ZZL_U_CODE)
    </div>

    <div class="editor-label">
        @Ajax.ActionLink("Land code test", "Index", "Domein", new {name = "lan" }, 
            new AjaxOptions {
                HttpMethod = "Get",
                Url = Url.Action("Index", "Domein", new {name = "lan" }), 
                OnBegin = "OnBegin",
                OnSuccess = "InsertCodeNaam",
                OnFailure = "OnFailure",
                OnComplete = "OnComplete"
            })
    </div>

当用户选择代码/说明时,将调用以下Select操作,该操作会返回Json个数据。

选择操作:

public class DomeinController : Controller
{
    private ZZLEntities db = new ZZLEntities();

    //
    // GET: /Domein/

    public ViewResult Index(string name)
    {
        DomeinViewModel model = DomeinRepositry.GetAll(name);
        return View(model);
    }



     GET: /Domein/Select/5

    public JsonResult Select(int id, string naam)
    {
        return Json(new DomCodeNaam { codeValue = id, naamValue = naam }, JsonRequestBehavior.AllowGet);
    }

还有其他解决方案吗?部分观点可以选择吗?

1 个答案:

答案 0 :(得分:0)

你有两个选择:

  1. 只需回发查找值,然后在内部重定向到 第一个(“创建”)视图,但这次传递(内部)值 由用户选择,因此可以使用选定的值呈现视图。也许 实现并不容易,但很容易实现。您将丢失用户已输入第一个表单的数据,除非您将其发布或者将其分为两个步骤。
  2. 如果要使用Ajax,则需要更新相应的部分 在客户端的第一个“创建”视图中形成,具体取决于 用户的行为(即他们选择了哪些查找值)。
  3. 然而,我对“单独观点”

    的确切含义感到困惑