簡體   English   中英

如何將數據從控制器傳遞到 ASP.NET MVC 中查看

[英]How to to pass data from controller to view in ASP.NET MVC

我嘗試將數據從登錄視圖傳遞到 Empinput 視圖。 我嘗試使用 Http 會話不適用於數據傳遞。

我收到此錯誤:

“HttpSessionStateBase”不包含“SetString”的定義,並且無法找到接受“HttpSessionStateBase”類型的第一個參數的可訪問擴展方法“SetString”。

我把代碼放在下面請告訴我如何傳遞數據?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DemoEmployee.Models;
using System.Web.Security;
using System.Web.UI.WebControls;
using Microsoft.AspNetCore.Http;

public ActionResult Login(Models.Member model)
{
    var userr = db.User.Where(x => x.UserName == model.UserName && x.Password == model.Password).FirstOrDefault();
            
    name = model.UserName;

    if (userr == null)
    {
        ModelState.AddModelError("", "Invalid username and password");
        FormsAuthentication.SetAuthCookie(model.UserName, false); 
    }
    else
    {
        // This is not working for passing data to another view
        HttpContext.Session.SetString("Username", model.UserName.ToString());
        return RedirectToAction("Empinput", "Empinput");    
    }

    return View();
}

[HttpPost]
public ActionResult Empinput(Employee model)
{
        Member member = new Member();
        Login sdm = new Login();

        // this is not working for passing data from Login view
        String name = HttpContext.Session.GetString("Username"); 
}

這真的很容易。 您可以將數據傳遞給ViewBag進行查看。

在您的控制器中:

ViewBag.[write a name for View Bag]  = [Your Value]

它就像一個變量,但它是動態的。

在您的示例視圖中:

<td>@ViewBag.[Viewbag name]</td>

有不同的方法可以將值從控制器傳遞到視圖。

  1. 臨時數據

在您的控制器函數中,您可以初始化一個 TempData,然后在您的視圖中使用它。 但它只會在一個請求中保存該值。 例如, TempData["UserName"] = model.UserName;

然后在視圖中,您可以將值存儲到變量中然后顯示變量值,也可以直接顯示 tempData 值。 例如,

var UserName = TempData["UserName"] as string;

  1. 查看數據

ViewData 的行為和操作也像 TempData

ViewData["UserName"] = model.UserName; 然后在視圖中使用它。

  1. 查看包

在控制器中,

ViewBag.UserName = model.UserName

在 View 中,您可以將其用作

@ViewBag.UserName

  1. 您可以使用簡單會話

Session["UserName"] = model.UserName;

  1. 如果您的模型有更多需要傳遞給視圖的項目,您也可以使用視圖模型,然后將整個模型傳遞給視圖。

我希望這可以幫助你! 祝一切順利。

把它稱為方法兄弟。

在此處輸入圖片說明

https://github.com/EmpeRoar/StackOverFlowSolutions/blob/main/SO-Solutions/SO.Mvc31/Controllers/EmployeeController.cs

public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
}
public class EmployeeController : Controller
{
    public EmployeeController()
    {

    }

    public async Task<IActionResult>  Login()
    {
        var emp = new Employee()
        {
            ID = 1,
            Name = "Vladimir Bacosa"
        };
        await EmpInput(emp);
        return View();
    }

    [HttpPost]
    public async Task<IActionResult> EmpInput(Employee emp)
    {
        Console.WriteLine(emp.Name);
        return View();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM