When you run into an issue or have a question about ASP.NET MVC the best place for it is the MVC Forum. When you write your question, there are a few simple things that you can do to make it easier for the ‘experts’ to answer (and hence to get an answer quicker!).
If an issue you see in a complex scenario can also be seen in a simpler scenario, it is always better to report it on the simpler scenario. It makes the question shorter and easier to read, as it keeps it focused on the essential. You will get your question answered much quicker if you can reproduce the problem with the simplest possible code. More likely than not, you'll figure out the problem when you make the simple repro.
The official release of MVC is version 3. There are also various preview bits and samples that you can download from Codeplex. Just mention exactly what you are using. If you’re using some preview bits, you can include a link to them to them to remove any ambiguity.
Most likely, you are using either “Cassini” (the test web server built in Visual Studio), IIS Express, IIS6 (XP), or IIS7 (on Vista) IIS 7.5 ( Windows 7 or Windows Server 2008). In many cases it makes a relevant difference, so it’s good to mention it.
If you’re getting an error in the browser, make sure you include the full stack trace that you see in there, and not just the text of the error. Looking through a stack trace can reveal some important clues about the issue. If you don't get a stack trace, make sure you disable Step Into Just My Code. A stack trace is shown below.
Line 16: public ActionResult About() { Line 17: int x = 0, y = 1, z; Line 18: z = y / x; Line 19: return View(); Line 20: }
[DivideByZeroException: Attempted to divide by zero.] MvcStackTrace.Controllers.HomeController.About() in s:\rm\MvcStackTrace\MvcStackTrace\Controllers\HomeController.cs:18 lambda_method(ExecutionScope , ControllerBase , Object[] ) +40 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +178 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +24 System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() +52 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +254 System.Web.Mvc.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +192 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +392 System.Web.Mvc.Controller.ExecuteCore() +138 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +39 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +34 System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +138 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +44 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +7 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8678910 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Obviously, we don’t expect you to use Northwind or Adventure Works Light in your real project. But when you run into an issue with your custom schema, you should always check whether you are able to see the same thing with the standard DBs. Those DBs have schemas which contain many of the common patterns that you may be using. e.g. For One to Many relationship, you Northwind’s Product/Category, and for Many To Many, use Employees/Territories.
There are a few reasons why doing this is preferred. First, most readers are familiar with those schemas, so they can make sense of the situation quicker without having to analyze a custom schema. It also makes it a lot easier for people to try to reproduce the issue you’re seeing, since everyone has those sample databases. And finally, if the issue calls for a sample that demonstrates a workaround, using the standard DB, makes it much more useful to everyone else who runs into it.
Clearly, there are some situation where your custom schema is just different and using the standard DBs will not work. In those cases, just try to precisely describe your schema. Including a diagram or the SQL DDL can help too. In a nutshell, make sure that a reader not familiar with your database will understand enough of it to make sense of your question.
if you’re getting an error in the browser, make sure you include the full stack trace that you see in there, and not just the text of the error. Looking through a stack trace can reveal some