如果声明为cookie - WebMatrix / Razor

问题描述 投票:2回答:2

我已经设置了一个我想用来填充表单的cookie,这样用户就不需要继续填写相同的表单(它正在向度假别墅的所有者提交查询)。

如果已经设置了cookie,我可以正常工作,但如果没有设置cookie,则会出错。

我猜我需要使用“if”语句,但不太清楚如何编写代码。

这是设置cookie的代码......

Response.Cookies["BookingEnquiry"]["ReqName"] = Request["BookingReqName"];
Response.Cookies["BookingEnquiry"]["ReqEmail"] = Request["BookingReqEmail"];
Response.Cookies["BookingEnquiry"]["ReqPhone"] = Request["BookingReqPhone"];
Response.Cookies["BookingEnquiry"]["NumAdults"] = Request["BookingNumAdults"];
Response.Cookies["BookingEnquiry"]["NumChildren"] = Request["BookingNumChildren"];
Response.Cookies["BookingEnquiry"]["ReqMessage"] = Request["BookingReqMessage"];
Response.Cookies["BookingEnquiry"].Expires = DateTime.Now.AddHours(4); 
}

以下是从cookie中收集信息的变量...

var reqname = Request.Cookies["BookingEnquiry"]["ReqName"];
var reqemail = Request.Cookies["BookingEnquiry"]["ReqEmail"];
var reqphone = Request.Cookies["BookingEnquiry"]["ReqPhone"];
var numadults = Request.Cookies["BookingEnquiry"]["NumAdults"];
var numchildren = Request.Cookies["BookingEnquiry"]["NumChildren"];
var reqmessage = Request.Cookies["BookingEnquiry"]["ReqMessage"];

这是表单中的示例输入...

<label>Name</label>
<input type="text" name="BookingReqName" id="BookingReqName" placeholder="full name…" value="@reqname">
cookies razor webmatrix setcookie
2个回答
2
投票

在WebMatrix C#.net中,我认为你正在寻找这样的东西:

if(Request["BookingReqName"] != null)
{
    Response.Cookies["BookingEnquiry"]["ReqName"] = Request["BookingReqName"];
}
else
{
    Response.Cookies["BookingReqName"] = ""; //<--Whatever default value you want (I've used an empty string here, so you, at least, won't get a null reference error).
}

或者你可以使用相同的代码作为一个班轮(不要弄乱你的代码,但这会降低可读性,obv。)。

if(Request["BookingReqName"] != null){Response.Cookies["BookingEnquiry"]["ReqName"] = Request["BookingReqName"];}else{Response.Cookies["BookingReqName"] = ""; //<--Whatever default value you want (I've used an empty string here, so you, at least, won't get a null reference error).}

您只需要为所有请求cookie值的行执行此操作。

但重点是,任何事情都可以进入“else”块,这有助于您在cookie值被清除/过期时(您必须始终期望)处理该怎么做。您可以重定向到请求用户提供信息以重置任何“遗忘”配置的页面,或者,如果您想要保留数据,无论如何,请考虑将这些值存储在数据库中,因为这些值不会清除/到期。

最后一件事,如果这没有帮助:

如果你发现自己想知道在cookie中存储什么值(你想要指定的默认值),因为你需要知道,就在那里,它应该记住的是什么,那么我恐怕是时候重新考虑了如何构建数据流。

对不起,但是我曾经这样做过,曾经只使用Session变量,并且它不是很漂亮:)

如果您需要任何有关在网页之间传输数据的最佳方式的帮助,请查看Mike Brind网站上非常有用的简明链接:http://www.mikesdotnetting.com/Article/192/Transferring-Data-Between-ASP.NET-Web-Pages


0
投票

它应该是以下

  if(Request.Cookies["BookingEnquiry"] == null)
  {
     return; // <- if BookingEnquiry is null we end this routine
  }

   // Normal code flow here...

或类似的东西

© www.soinside.com 2019 - 2024. All rights reserved.