HTML
<input type="text" class="form-control" ng-model="ModifiedDate" id="ModifiedDate">
app.js
$scope.ModifiedDate = $filter("date")(Date.now(), 'dd-MM-yyyy');
模型
public System.DateTime ModifiedDate { get; set; }
控制器
public IHttpActionResult PostPerson1(UserVM vm)
{
var pers = new Person1
{
Title = vm.Title,
FirstName = vm.FirstName,
LastName = vm.LastName,
UserName = vm.UserName,
EmailPromotion = vm.EmailPromotion,
SMSPromotion = vm.SMSPromotion,
Telephone = vm.Telephone,
Extension = vm.Extension,
Mobile = vm.Mobile,
Email = vm.Email,
Email2 = vm.Email2,
ModifiedDate = (DateTime) vm.ModifiedDate,
UserAuthRoleId = vm.UserAuthRoleId
};
var word = new Password();
using (var context = new VybeEstoreEntities1())
{
context.People1.Add(pers);
// word.PersonID = pers.PersonID;
word.ModifiedDate = pers.ModifiedDate;
word.Password1 = vm.Password1;
word.rowguid = vm.rowguid;
context.Passwords.Add(word);
context.SaveChanges();
当我想在任何帮助下保存默认日期时,我发现我的C#代码有错误。
错误:
{“将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。\ r \ n语句已终止。”}
答案 0 :(得分:0)
您应该检查您的请求(使用您最喜爱的浏览器中的fiddler或网络标签,以查看发布的数据)。也就是说,在HTML中,您的输入元素缺少name
属性。您应该添加:
<input type="text" class="form-control" ng-model="ModifiedDate"
id="ModifiedDate" name="ModifiedDate">
您的操作方法将Person1作为参数。它需要一个名为ModifiedDate for MVC的属性来解析请求中发送的ModifiedDate。发送的ModifiedDate格式为(由您!)格式为dd-MM-yyyy。根据您的asp.net应用程序中的locale / cultureinfo,此格式可能被错误地解析为MM-dd-yyyy。您可以通过将日期设置为可以解析的内容进行测试,即使交换日期和月份也是如此。您可以尝试10-10-2015,看看是否有效。如果是这种情况,您可以尝试将CurrentCultureInfo设置为您希望接受dd-MM-yyyy的所有cultureinfo。可能是欧洲文化信息。
Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK"); // Danish
有更优雅的方式来设定当前的文化,但似乎你现在正在调试......