【问题标题】:How to pass Input type text value to TempData in View MVC如何在 View MVC 中将输入类型文本值传递给 TempData
【发布时间】:2021-05-20 08:15:01
【问题描述】:

如何将输入类型文本值传递给 TempData

<input type='text' name='APP_COMMENT' />
@{TempData["APP"] = //This's where I want the input value;}

编辑:

这是我需要从视图发送到控制器的操作(不是控制器来查看)

public ActionResult Approved()
    {
        Entities1 db = new Entities1();
        string y=(TempData["APP"]).ToString(); //TempData is send from the View to Controller
        decimal sl = (decimal)TempData["rt"];
        var sp = db.TB_RST_SVCHDR.Where(x => x.REQ_NO == sl);

        foreach (var p in sp)
        {
            if (p.STATUS == "N")
            {
                p.STATUS = "A1";
                p.APP1_COMMENT = y; //Here's where the TempData is saved 
                p.APP1_DATEACTION = DateTime.Now;
                p.APPROVER1 = "";
                var s = p.APPROVER2;
                //var ss = p.APPROVER2; 
                var s2 = p.REQUESTOR_EMPNAME;
                TempData["email-act2"] = s2;
                //SendEmail(s, ss);
                SendEmail(s);
                db.SaveChanges();
                return View("~/Views/Home/Index.cshtml");
            }
        }
        //return View();
        return View("~/Views/Home/Index.cshtml");
    }

【问题讨论】:

    标签: c# asp.net-mvc-4 model-view-controller


    【解决方案1】:

    但是,您的问题似乎更像是 Post 操作。在这种情况下,您应该考虑阅读如何使用表单发布数据。使用this

     @using (Html.BeginForm("Approved", "Controllername", FormMethod.Post))
     {
            <input type="text" name="data"> 
            <input type="submit">
     }
    

    然后像这样设置控制器动作:

    [HttpPost]
    public ActionResult Approved(string data)
    {
        Entities1 db = new Entities1();
        string y= data;
        decimal sl = (decimal)TempData["rt"];
        var sp = db.TB_RST_SVCHDR.Where(x => x.REQ_NO == sl);
    
        foreach (var p in sp)
        {
            if (p.STATUS == "N")
            {
                p.STATUS = "A1";
                p.APP1_COMMENT = y; //Here's where the TempData is saved 
                p.APP1_DATEACTION = DateTime.Now;
                p.APPROVER1 = "";
                var s = p.APPROVER2;
                //var ss = p.APPROVER2; 
                var s2 = p.REQUESTOR_EMPNAME;
                TempData["email-act2"] = s2;
                //SendEmail(s, ss);
                SendEmail(s);
                db.SaveChanges();
                return View("~/Views/Home/Index.cshtml");
            }
        }
        //return View();
        return View("~/Views/Home/Index.cshtml");
    }
    

    【讨论】:

    • 谢谢,但我需要将 TempData(视图)发送到控制器,只需将 '' 值复制到 TempData
    • 请问您为什么要将元素发送到控制器?在我看来,只需使用表单和提交将输入值发送到控制器即可轻松解决您的问题。
    • 因为在 Textbox 中我写了一条评论,所以我只想将我从 TextBox 引入的值传递给 TempData,当我按下表单中的按钮时,这会调用一个函数(我将编辑问题并添加代码)以便该函数保存数据。
    • 问题是编辑
    • 你的变量的用法真的不清楚。变量名应该是描述性的informit.com/articles/article.aspx?p=24472我更新了我的答案。
    【解决方案2】:

    除非您想要在输入更改时更新TempData["APP"] 的动态内容,否则您可以做的是在发布该表单时分配值。所以,你做一些这种性质的事情。

    public async Task<IActionResult> OnPostAsync(Model model) 
    { 
        model.YourField = TempData["APP"] 
    } 
    

    【讨论】:

    • 谢谢,但我需要将 TempData(视图)发送到控制器,只需将 '' 值复制到 TempData
    猜你喜欢
    • 2013-10-08
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2015-11-15
    • 2020-07-05
    相关资源
    最近更新 更多