我不能改变在MVC

布尔值,我做一个小的MVC项目。我希望当我点击按钮时,登录用户的Vip状态将会改变。 (根据会议)。但是当我点击时,没有任何变化。我不能改变在MVC

存储过程:

CREATE PROCEDURE setupVip2  

\t @MaKhachHang nvarchar(10)

AS

BEGIN

\t SET NOCOUNT ON;

\t UPDATE khachhang

SET IsVip = 1

WHERE MaKhachHang = @MaKhachHang

END

GO

型号:

public void setupvip(string id)  

{

re.setupVip2(id);

}

控制器:

[HttpGet]  

public ActionResult KetQua(string id)

{

khachhang kh = re.khachhangs.Find(id);

return View(kh);

}

[HttpPost]

public ActionResult KetQua(string id, khachhang c)

{

try

{

if(ModelState.IsValid)

{

MuaVipModel mm = new MuaVipModel();

mm.setupvip(c.MaKhachHang);

return RedirectToAction("Index");

}

return View(c);

}

catch

{

return View(c);

}

}

查看:

@model Model.khachhang  

@using RaovatThuCung.Common

@{

ViewBag.Title = "KetQua";

Layout = "~/Views/Shared/_Layout.cshtml";

var session = (UserLogin)Session[CommonConstants.USER_SESSION];

}

<h2>KetQua</h2>

@using (Html.BeginForm("KetQua","MuaVip",FormMethod.Post))

{

@Html.AntiForgeryToken()

<div class="form-horizontal">

<h4>Thanh toán thành công</h4>

<hr />

@Html.ValidationSummary(true, "", new { @class = "text-danger" })

@Html.Hidden("session.UserID",session.UserID)

<div class="form-group">

<div class="col-md-offset-2 col-md-10">

<input type="submit" value="Kích hoạt vip" class="btn btn-default" />

</div>

</div>

</div>

}

  • 难道错在Html.Hidden?如果没有,请告诉我我的错。谢谢。

回答:

在你HttpPost操作方法,你传递 khachhang对象的MaKhachHang财产。这意味着,您需要从提交的表单中发送该值。

您可以将MaKhachHang的值保留在隐藏输入字段内部的表格内。您可以使用HiddenFor辅助方法来生成该属性的隐藏输入元素。

@Html.HiddenFor(a=>a.MaKhachHang) 

这将使得从您从GET动作传递khachhang对象的值。它可能不是当前用户,但是您的Find方法正在返回。如果您想使用来自会话的用户ID登录,不要试图将其传递到用户界面,并将其传递回服务器(因为客户端浏览器上的任何内容都可以由用户使用浏览器的开发工具进行更新)。只需在您的服务器代码中使用它。

只需从会话中读取UserLogin,并在调用setupvip方法时使用UserID属性值,即在HttpPost操作方法中。

[HttpPost] 

public ActionResult KetQua(string id, khachhang c)

{

var session = Session[CommonConstants.USER_SESSION] as UserLogin;

// to do : Do null check before accessing session

var mm = new MuaVipModel();

mm.setupvip(session.UserID);

return RedirectToAction("Index");

}

回答:

我想你可以尝试:

@Html.HiddenFor(a=>a.MaKhachHang) 

以上是 我不能改变在MVC 的全部内容, 来源链接: utcz.com/qa/257245.html

回到顶部