【发布时间】:2017-08-31 01:53:36
【问题描述】:
它是一个 .aspnet core2 站点。 我一直在用不同的方法进行“反复试验”。
除了日期线之外,这些都不起作用,所以我知道剃须刀正在工作。 我只是想在代码中设置 Userid 的值并将其显示为隐藏元素的值。没想到会这么复杂。
索引.cshtml
@model iBasisMobileV14.Models.AccountViewModels.CheckoutViewModel
@using Microsoft.AspNetCore.Http.Authentication
@using Microsoft.AspNetCore.Http
@using Microsoft.AspNetCore.Identity
@using iBasisMobileV14.Models.AccountViewModels
.......
@DateTime.Now.Year //Works OK
@Model.UserID // Object reference not set to an instance of an object.
@Html.Raw(UserID);
@Html.HiddenFor(m => m.UserID , new { @id = "M_UserID" })
<input asp-for="UserID" id="M_UserID" />
CheckoutViewModel
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace iBasisMobileV14.Models.AccountViewModels
{
public class CheckoutViewModel
{
//[Display(Name = "UserID")]
private string _UserID;
public string UserID
{
get {
_UserID = "blabla";
return _UserID; }
set { _UserID = value; }
}
}
}
结帐控制器
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using NLog;
using Microsoft.AspNetCore.Identity;
using iBasisMobileV14;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
using iBasisMobileV14.Models;
using iBasisMobileV14.Data.EntityModel;
using iBasisMobileV14.Classes;
namespace iBasisMobileV14.Controllers
{
public class CheckoutController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
IHttpContextAccessor _httpContextAccessor;
private AppSettings _appSettings { get; set; }
public string UserID { get; private set; }
public CheckoutController(
IHttpContextAccessor httpContextAccessor,
UserManager<ApplicationUser> userManager,
IOptions<AppSettings> appSettings)
{
_userManager = userManager;
_appSettings = appSettings.Value;
_httpContextAccessor = httpContextAccessor;
//Session needs something set or it changes every page load
UserID = "ccccccccc";
}
public IActionResult Index()
{
Guid userId = new Guid(_userManager.GetUserId(_httpContextAccessor.HttpContext.User));
ViewData["UserID"] = "sdfdsfdfsdfdsfd"; // userId;
// Logger.Info("Front");
return View();
}
}
}
【问题讨论】:
-
您没有在 GET 方法中将模型传递给视图,因此模型为
null(您无法访问null的对象的属性。只需传递您的CheckoutViewModel的实例模型(带有UserID集)使用return View(yourModel);
标签: c# razor asp.net-core-mvc