如何在不同的网页之间传递信息

时间:2011-11-10 18:59:37

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

大家好我想在不同的页面之间传递信息,但我不知道如何。

我在

里面有Html.ActionLink这个表格
<% using (Html.BeginForm("Save", "Envi"))
    {%>
        <%: Html.ValidationSummary(true)%>

            <div class="editor-label">
                <%: Html.Label("Description:")%>
            </div>
            <div class="editor-field">
                <%: Html.TextBox("info", lp.Description)%>
     ...
            <div>
                <%: Html.ActionLink("Change Image", "ChangeImg", "Envi", new {id=lp}, new {id="cambio"})%>
   ...
            <p>
                <input type="submit" value="Save" name="<%= lp.Id %>"/>
            </p>
    <% } %>
<% } %>

当我点击Html.ActionLink时,我会显示其他页面(带有fancyBox的对话框),我选择了一个图像。

我想将表单中的所有数据传递到此页面。现在当我再次显示表单时,我有新数据,没有旧数据。 我怎样才能做到这一点???

感谢。

2 个答案:

答案 0 :(得分:0)

建议您使用TempData字典。这仅适用于下一个请求。

从MSDN引用:

  

动作方法可以将数据存储在控制器的TempDataDictionary中   对象在调用控制器的RedirectToAction方法之前   调用下一个动作。 TempData属性值存储在   会话状态。在之后调用的任何操作方法   设置TempDataDictionary值可以从对象中获取值   然后处理或显示它们。 TempData的值一直持续到它为止   被读取或直到会话超时。在此持久保存TempData   方式启用重定向等方案,因为中的值   TempData可以在单个请求之外使用。

希望这能给你答案。

答案 1 :(得分:0)

理想情况下,我认为表单应该提交给单个操作。

因此控制器可能如下所示:

public class HomeController : Controller
{
    public ViewResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(ItemModel itemModel, string submit)
    {
        //I'm not sure why I need this but the fields display with empty results on my machine otherwise
        ModelState.Clear();

        if (submit == "edit")
        {
            this.TempData.Add("item", itemModel);
            return View("ChangeImage", new ImageModel { ImageName = itemModel.ImageName }); 
        }
        else
        {
            //perform save here
            return RedirectToAction("ViewAfterSavePerformed");
        }
    }

    [HttpPost]
    public ViewResult Image(ImageModel imageModel)
    {
        ItemModel itemModel = (ItemModel)this.TempData["item"];
        itemModel.ImageName = imageModel.ImageName;
        return View("Index", itemModel);
    }
}

使用以下视图模型:

public class ItemModel
{
    public string Description { get; set; }

    public string ImageName { get; set; }
}

public class ImageModel
{
    public string ImageName { get; set; }
}

以下观点:

<强>索引:

<h2>Index</h2>

@using (Html.BeginForm())
{
    <p>Description: @Html.EditorFor(m => m.Description)</p>
    <p>Image: @Html.EditorFor(m => m.ImageName)</p>
    <input type="submit" name="submit" value="edit" />
    <input type="submit" name="submit" value="save" />
}

更改图片

<h2>ChangeImage</h2>

@using (Html.BeginForm("Image", "Home"))
{
    <p>Image: @Html.EditorFor(m => m.ImageName)</p>

    <input type="submit" name="submit" value="save image" />
}

希望即使我使用了razor语法也应该感觉到这一点。