Asp.net 如何在不同的网页之间传递信息
大家好,我正在尝试在不同的页面之间传递信息,但我不知道如何传递 我有这个表单,里面有Html.ActionLinkAsp.net 如何在不同的网页之间传递信息,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,大家好,我正在尝试在不同的页面之间传递信息,但我不知道如何传递 我有这个表单,里面有Html.ActionLink <% using (Html.BeginForm("Save", "Envi")) {%> <%: Html.ValidationSummary(true)%> <div class="editor-label"> <%: Html.Label("Descri
<% 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的对话框),在那里我选择了一个图像
我想将表单中的所有数据传递到此页面。现在,当我再次显示表单时,我有了新数据,没有旧数据。
我该怎么做
谢谢。建议您使用
TempData
字典。这将仅适用于下一个请求
引用MSDN:
动作方法可以将数据存储在控制器的TempDataDictionary中
对象,然后调用控制器的RedirectToAction方法
调用下一个操作。TempData属性值存储在中
会话状态。在
设置TempDataDictionary值可以从对象和
然后处理或显示它们。TempData的值一直持续到
读取或直到会话超时。将临时数据持久化到此
way启用重定向等场景,因为
TempData的可用性超出了单个请求
希望这能给你答案。理想情况下,我认为表单应该提交给单个操作 因此,控制器可能如下所示:
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" />
}
索引
@使用(Html.BeginForm())
{
Description:@Html.EditorFor(m=>m.Description)
Image:@Html.EditorFor(m=>m.ImageName)
}
更改图像:
<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" />
}
ChangeImage
@使用(Html.BeginForm(“Image”,“Home”))
{
Image:@Html.EditorFor(m=>m.ImageName)
}
希望即使我使用了razor语法,也能感觉到这一点。再次调用此视图的控制器需要将正确的模型传递给它,其中包含您希望它显示的数据。如果这还不够,还可以发布“保存”和“更改”视图的控制器代码。(总共应该有4个控制器方法,2个HttpGet和2个HttpPost)