我正在阅读Microsoft网站上有关如何显示或隐藏对象的“注册”链接的示例,具体取决于当前用户是否已注册。 只有当前用户尚未注册时,他们才会将以下代码添加到视图中以显示“注册”链接: -
<div id=”rsvpmsg”>
<% if (Request.IsAuthenticated) { %>
<% if (Model.IsUserRegistered(Context.User.Identity.Name)) { %>
<p>You are registered for this event!</p>
<% } else { %>
<%: Ajax.ActionLink( “RSVP for this event”,
“Register”, “RSVP”,
new { id=Model.DinnerID },
new AjaxOptions { UpdateTargetId=”rsvpmsg” }) %>
然后在注册操作方法上,他们也执行相同的检查以检查用户是否已经注册,如下: -
[Authorize, HttpPost]
public ActionResult Register(int id) {
Dinner dinner = dinnerRepository.GetDinner(id);
if (!dinner.IsUserRegistered(User.Identity.Name)) {
RSVP rsvp = new
RSVP();
// .....
所以我的问题是为什么他们再次对Post动作方法执行相同的检查,用户有机会调用POST寄存器动作方法,而不是点击不会是的Register注册链接如果用户已经注册,则显示? ...所以为什么不考虑
if (!dinner.IsUserRegistered(User.Identity.Name))
检查动作方法是否必要? BR
答案 0 :(得分:5)
是的,这显然是可能的,而且很容易。
答案 1 :(得分:3)
是的,我用它进行测试。例如,Fiddler(http://fiddler2.com/fiddler2/)将允许您创建/编辑请求,然后发送它们以及查看它们