我正在使用ASP.NET MVC 3来构建Web应用程序.
我想要做的是在两个控制器之间传递值,虽然有很多方法可以做到这一点我特别感兴趣的是使用TempData它.
public ActionResult Action1()
{
string someMessage;
Test obj = SomeOperation();
if(obj.Valid)
{
someMessage = obj.UserName;
}
else
{
someMessage = obj.ModeratorName;
}
TempData["message"] = someMessage;
return RedirectToAction("Index");
}
public ActionResult Index()
{
ViewBag.Message = TempData["message"]
return View();
}
Run Code Online (Sandbox Code Playgroud)
那么TempData这里的使用是否正确?我的意思是在最好的编程实践中使用这种正确的方法TempData吗?
在什么时候应该TempData使用案例?
注意:我已经通过以下链接
谢谢
谷歌搜索了一段时间后,我对如何在asp mvc 3中这样做有点困惑.
因此,任务是为几个控制器的视图提供一个公共布局(或主?)页面.所有视图都是强类型的...这个布局页面实际上可视化一些强类型的对象.所以,我需要将这个对象传递给布局页面,将它传递给`Html.RenderPartial()'或者在页面中正确呈现它.
文章将数据传递给查看母版页(C#)(虽然是mvc2的旧版本)提供了一个示例来提供基本抽象控制器类,并将模型传递给ViewData.这可能是治愈方法.
但...
在某些线程中,我找到了一种可以创建强类型母版页的方法:
<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %>
Run Code Online (Sandbox Code Playgroud)
那么,mvc3中有相同的方法吗?或者将数据传递到布局页面的唯一方法是使用ViewBag还是ViewData?
在阅读了什么是在asp.net-mvc中将ViewModel数据绑定到母版页的最佳方法之后,我已经考虑了Darin的答案,但仍然认为这一组视图将具有相同的布局,并且没有理由反对DRY原理.
那么,如何将强类型对象传递给布局页面?或者我混淆了什么?
我在actionfilter中的第一个请求中将值放入TempData.
filterContext.Controller.TempData["value"] = true;
Run Code Online (Sandbox Code Playgroud)
之后第二个请求进来,我检查了值
filterContext.Controller.TempData.ContainsKey("value")
Run Code Online (Sandbox Code Playgroud)
价值就在那里.然后第三个请求进来,我再次检查该值
filterContext.Controller.TempData.ContainsKey("value")
Run Code Online (Sandbox Code Playgroud)
而且价值仍然存在.在第二次请求后,这个值不应该被销毁吗?所有请求都是AJAX请求.
简介:我是一名试图学习ASP.NET核心MVC的.NET学生.所以请理解.我在网上搜索了我的问题的答案,但还没有找到适合我的解决方案.
问题:我想在创建帖子时将创建帖子方法的验证消息传递给索引IActionmethod,并且它们现在将其显示为警报消息.我在网上看到ViewBag在重定向中存活,但TempData确实如此.到目前为止这是我的代码.
创建帖子方法:
public IActionResult CreatePost(string textContent, string headline, string type)
{
var catType = new Category() { CategoryType = type.ToUpper() };
if (db.Category.Any(s => s.CategoryType.Trim().ToLower() == type.Trim().ToLower()))
catType = db.Category.FirstOrDefault(s => s.CategoryType.Trim().ToLower() == type.Trim().ToLower());
var newPost = new Post()
{
Content = textContent,
Header = headline,
DateOfPost = DateTime.Now,
category = catType
};
db.Posts.Add(newPost);
db.SaveChanges();
TempData["validation"] = "Your post hase been publsihed";
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
索引方法:
public IActionResult Index()
{
var validation = TempData["validation"];
var posts = (from x …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET MVC在线商店类应用程序,有两个视图:
用户成功提交表单后,应将其重定向回项目页面,并在顶部显示一次性消息:"您的评论已成功提交".
控制器代码(简化)如下所示:
[HttpGet]
public ActionResult ViewItem([Bind] long id)
{
var item = _context.Items.First(x => x.Id == id);
return View(item);
}
[HttpGet]
public ActionResult AddReview()
{
return View();
}
[HttpPost]
public ActionResult AddReview([Bind] long id, [Bind] string text)
{
_context.Reviews.Add(new Review { Id = id, Text = text });
_context.SaveChanges();
return RedirectToAction("ViewItem");
}
Run Code Online (Sandbox Code Playgroud)
有几个要求要满足:
我想将消息存储在用户会话中并在显示后将其丢弃,但是可能有更好的解决方案吗?
我可以将tempdata发送到重定向页面吗?如果有,怎么样?如果没有,任何替代方案?
我将.net mvc 4.0用于新项目。我想知道ViewData,ViewBag和TempData有什么区别?
我尝试在网上搜索,但找不到任何好的文档资料。
我有以下声明:
return Redirect(this.Request.UrlReferrer.AbsolutePath);
Run Code Online (Sandbox Code Playgroud)
这会重定向到调用者视图.它工作正常,但现在我需要在重定向时返回一个视图模型,这样的事情(这是错误的):
return Redirect(this.Request.UrlReferrer.AbsolutePath(item));
Run Code Online (Sandbox Code Playgroud)
那我该怎么做呢?
我想这样做是因为我有一个jqrid,其中一个列提供了一些操作,编辑和删除行.因此,如果用户点击编辑,我将从传递给数据库的id中检索一些数据.然后,一旦我得到这些数据,我填充一个视图模型,以便更新视图中的一些文本框,所以我需要在重定向时传递视图模型.
在我的控制器代码下面:
public ActionResult Edit(int id)
{
ItemViewModel item = new ItemViewModel();
using (DBContext context = new DBContext())
{
Items itemToModify = context.Items.Single(i=> i.ItemId == id);
item.Desc = itemToModify.Desc;
item.Name = itemToModify.Name;
}
return Redirect(this.Request.UrlReferrer.AbsolutePath, item); <-- how to do this
}
Run Code Online (Sandbox Code Playgroud)