我在查询字符串中传递参数。当我将链接悬停在浏览器中时,它会正确显示查询字符串中的键值对。当我单击链接时,首先,在特定操作中不触发断点,其次,我得到以下异常:
参数字典包含参数的空条目 方法的非可空类型'System.DateTime'的'endDate' 'System.Web.Mvc.ActionResult GetAllExpenses(System.String, System.String,System.DateTime,System.DateTime)'in 'GPI.Controllers.HomeController'。可选参数必须是a 引用类型,可空类型,或声明为可选 参数。
我理解它要求endDate
参数不为null,但是值正在查询字符串的变量中传递。我没理解。请帮我理解这一点。
最初我试过这个: -
/Home/GetAllExpenses?userId=@ViewBag.Id&expType=debit&startDate=@quarterThreeStartDate&endDate=@quarterThreeEndDate
并遇到同样的问题
之后我尝试了这个: -/Home/GetAllExpenses?userId=@HttpUtility.UrlEncode(ViewBag.Id)&expType=debit&startDate=@HttpUtility.UrlEncode(quarterThreeStartDate)&endDate=@HttpUtility.UrlEncode(quarterThreeEndDate)
我再次得到同样的例外。
这是浏览器中链接的图像。您可以看到所有变量值都在那里
图像中的链接对应于第1个方框,即第1季度和借记
我在局部视图中有以下变量,我在querystring中传递给它们各自的链接:
var quarterOneStartDate = new DateTime(ViewBag.Year, 1, 1);
var quarterTwoStartDate = new DateTime(ViewBag.Year, 4, 1);
var quarterThreeStartDate = new DateTime(ViewBag.Year, 7, 1);
var quarterFourStartDate = new DateTime(ViewBag.Year, 10, 1);
var quarterOneEndDate = new DateTime(ViewBag.Year, 3, 31);
var quarterTwoEndDate = new DateTime(ViewBag.Year, 6, 30);
var quarterThreeEndDate = new DateTime(ViewBag.Year, 9, 30);
var quarterFourEndDate = new DateTime(ViewBag.Year, 12, 31);
答案 0 :(得分:-1)
因为您无法真正控制发送到控制器的数据,所以您应该使用func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
//var token was initiated as a global variable
token = deviceToken.hexString()
}
func regDevTok(){
// Device Token
let deviceToken = defaults.objectForKey("DeviceToken") as! String?
if (deviceToken == nil) {
let type: UIUserNotificationType = [UIUserNotificationType.Badge, UIUserNotificationType.Alert, UIUserNotificationType.Sound]
let setting = UIUserNotificationSettings(forTypes: type, categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(setting)
UIApplication.sharedApplication().registerForRemoteNotifications()
}
}
将这些字段标记为无效,然后检查缺失值的强制值并相应地输出,无论如何这是一个错误或一个成功执行的动作。