English 中文(简体)
Mvc 3 证明有例外的财产
原标题:Mvc 3 validation of property that throws an exception

我在模拟类别上拥有财产,进行以下类型转换:

Model:

public class TimeClass
{
    private int timeInSeconds;

    [Required]
    public int Id {get;set;}

    [Required]
    public string Timer
    {
       get {
            TimeSpan ts = new TimeSpan(0,0,(int)timeInSeconds);
            return ts.ToString(@"mm:ss",CultureInfo.InvariantCulture);
       }
       set {
          try {
             var ts = TimeSpan.ParseExact(value, @"mm:ss", CultureInfo.InvariantCulture);
             timeInSeconds= Convert.ToInt32(ts.TotalSeconds);
          }
          catch {
             //Is it possible to add a validation error to the modelstate here
          }  
       }
    }
}

主计长:

[HttpPost]
public ActionResult Create(FormCollection collection)
{
  string[] whitelist = new[] {"Id", "Timer" };

  if (TryUpdateModel(quiz, whitelist))
  {
    //Save to Repo
    return RedirectToAction("Edit", new { Id = Id });
  }
  return View(tc);
}

What is the appropriate pattern to add an appropriate ModelError if the TimeSpan.Parse throws an exception? Currently it will give the generic error "The value "xxx" is invalid". How can I customize this to return a specific error?

最佳回答

您不能将审判量归入你的模型,而是可将处理错误的错误移至你的控制员代码。 例如,如果主审法官放弃一个例外,你可能会增加一种习俗模式错误:

TimeClass model = new TimeClass();
string[] whitelist = new[] {"Id", "Timer" };
try
{
    UpdateModel(model);

    //Save to Repo
    return RedirectToAction("Edit", new { Id = Id });
}
catch
{
    // Generate error
    ModelState.AddModelError(string.Empty, "Model Error Here");

    return View(tc);
}
问题回答

暂无回答




相关问题
WebForms and ASP.NET MVC co-existence

I am trying to make a WebForms project and ASP.NET MVC per this question. One of the things I ve done to make that happen is that I added a namespaces node to the WebForms web.config: <pages ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

Create an incremental placeholder in NHaml

What I want to reach is a way to add a script and style placeholder in my master. They will include my initial site.css and jquery.js files. Each haml page or partial can then add their own required ...

asp.net mvc automapper parsing

let s say we have something like this public class Person { public string Name {get; set;} public Country Country {get; set;} } public class PersonViewModel { public Person Person {get; ...

structureMap mocks stub help

I have an BLL that does validation on user input then inserts a parent(PorEO) and then inserts children(PorBoxEO). So there are two calls to the same InsertJCDC. One like this=>InsertJCDC(fakePor)...

ASP.NET MVC: How should it work with subversion?

So, I have an asp.net mvc app that is being worked on by multiple developers in differing capacities. This is our first time working on a mvc app and my first time working with .NET. Our app does not ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

热门标签