相关疑难解决方法(0)

在ASP.NET MVC中使用Tempdata - 最佳实践

我正在使用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.net-mvc tempdata asp.net-mvc-3 asp.net-mvc-2

66
推荐指数
3
解决办法
9万
查看次数

如何将viewmodel传递给布局/母版页?

谷歌搜索了一段时间后,我对如何在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原理.

那么,如何将强类型对象传递给布局页面?或者我混淆了什么?

c# master-pages asp.net-mvc-3

14
推荐指数
1
解决办法
1万
查看次数

第二次请求后,TempData不会销毁

我在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 tempdata asp.net-mvc-3

13
推荐指数
1
解决办法
1万
查看次数

使用RedirectToAction传递TempData

简介:我是一名试图学习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-core-mvc

13
推荐指数
2
解决办法
8073
查看次数

在重定向上传递消息以在ASP.NET MVC中查看

我有一个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)

有几个要求要满足:

  • 如果用户刷新项目页面,则不得再次显示该消息.
  • 该消息不得污染URL.
  • 控制器方法可能不会合并为一个.

我想将消息存储在用户会话中并在显示后将其丢弃,但是可能有更好的解决方案吗?

asp.net asp.net-mvc redirect

7
推荐指数
1
解决办法
1万
查看次数

TempData重定向页面?

我可以将tempdata发送到重定向页面吗?如果有,怎么样?如果没有,任何替代方案?

asp.net-mvc asp.net-mvc-3

6
推荐指数
1
解决办法
4214
查看次数

ViewData,ViewBag和TempData有什么区别?

我将.net mvc 4.0用于新项目。我想知道ViewData,ViewBag和TempData有什么区别?

我尝试在网上搜索,但找不到任何好的文档资料。

asp.net asp.net-mvc

5
推荐指数
1
解决办法
5053
查看次数

在ASP.NET MVC 4中重定向时传递viewModel

我有以下声明:

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)

asp.net-mvc-4

0
推荐指数
1
解决办法
3265
查看次数