0

我刚刚开始学习 ASP.NET MVC3。

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

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

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

代码片段创建视图:

<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);
    }

还有其他可能的解决方案吗?可以选择部分视图吗?

4

1 回答 1

0

那么你有两个选择:

  1. 只需回发查找值,然后在内部重定向到第一个(“创建”)视图,但这次传递(内部)用户选择的值,以便可以使用所选值呈现视图。也许不花哨但很容易实现。但是,您将丢失用户已经输入第一个表单的数据,除非您也发布它或者您将其设为两步过程。
  2. 如果您想使用 Ajax,您需要在客户端的第一个“创建”视图中更新表单的适当部分,具体取决于用户的操作(即他们选择了哪些查找值)。

但是,我对您所说的“单独视图”的确切含义有些困惑

于 2012-06-05T14:54:09.833 回答