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">
4

2 回答 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 页面

于 2013-03-20T21:46:48.107 回答
0

它应该只是以下

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

   // Normal code flow here...

或类似的东西

于 2013-03-19T14:52:13.763 回答