我已经设置了一个我想用来填充表单的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">
答案 0 :(得分: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
答案 1 :(得分:0)
应该是以下
if(Request.Cookies["BookingEnquiry"] == null)
{
return; // <- if BookingEnquiry is null we end this routine
}
// Normal code flow here...
或类似的东西