大家好我想在不同的页面之间传递信息,但我不知道如何。
我在
里面有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的对话框),我选择了一个图像。
我想将表单中的所有数据传递到此页面。现在当我再次显示表单时,我有新数据,没有旧数据。 我怎样才能做到这一点???
感谢。
答案 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语法也应该感觉到这一点。