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