MVC :: Sending Errors Back To View From Model?
Mar 26, 2010Suppose i have an insert function in my model like so:
//INSERT
public int? Insert(DataLayer.PersonRow row)
{
[code]...
Suppose i have an insert function in my model like so:
//INSERT
public int? Insert(DataLayer.PersonRow row)
{
[code]...
've created a Search partial view and it works, except for my view model. What i mean is, the partial view sends a string to my ActionResult Method, but only a string, that is not related to the view model that the partial view is built in. If i tell my ActionResult method to receive the view model in which the partial view is built in, it always tells me that i have null values. Here's my code This is my partial view:
[Code]....
Now here is my Model in my MoviesSearch view model:
[Code]....
Now the actual MoviesSearchViewModel
[Code]....
Inside my Search controller i have this
[Code]....
And then i have this:
Curious what the best practice is for returning errors to a view from a controller where the error isn't really a validation error, but more like "user not found" or "service timeout" type of errors. (in ASP.NET MVC2 framework)
I've been adding them to the ModelState's model errors, but that doesn't seem appropriate. (although easy to implement and maintain)
Example - A user tries to log in, and their credentials do not match a known user.
I have a C# web forms ASP.NET 4.0 web application that uses Routing for URLs for some reason custom errors defined in the system.web section of my web.config is entirely ignored and it will fall back the IIS errors.
This gets entirely ignored
[code]....
This would be a minor inconvenience except that by the fact it falls back to IIS native instead of my application it completely circumvents Elmah logging my 404 exceptions correctly.
I have been reading about different model for development
model view control mvc
model view presenter MVP
Model view view model MVVM
i belive MVC has two big Advantage over webform 1) TDD 2) More control on HTML
MVP is bit variation in mvc model. rapid development as well as 1) TDD 2) More control on HTML (correct me if i m wrong) see the below link
[URL]
If I pass in true to the ValidationSummary() helper so that it only displays model-level errors, how can I get the summary to display custom errors I add to ModelState?For instance, here is what I am after. I want my data annotation errors to display next to the textbox's using the ValidationMessage helper, but in my business layer I may throw an exception that I want to display in the validation summary.
View 1 RepliesThe first time I created my model, I thought a manual fix would keep it okay. But everytime I open my project, the model is updated and the Designer.cs is formatted weird. The following picture shows the main problem: I'm just not sure how to permanently fix it other than going through and deleting the "System.Data." and "System.whatever" paths when they are referenced. That is the only way the build/publish succeeds, and it's very time consuming to complete each time.
View 3 RepliesI'm being tasked with making changes to an asp.net application and really have no experience working with them other than dabbling in VWD.I was given a zip file of the directory containing the files. It was developed in VWD 2005. . My question is a general one: Are there steps I need to take (regenerate web.config file? change settings of some sort?) in order to get started? The application is functional on the web server.
View 2 RepliesI'm wondering what the best practice is in reporting back to the browser about application or model state errors that would be displayed to the user. Can you throw an exception and handle it in the error handler of the jquery post? For example, consider this method:
[HandlerErrorWithAjaxFilter, HttpPost]
public ActionResult RetrievePassword(string email)
{
User user = _userRepository.GetByEmail(email);
if (user == null)
throw new ClientException("The email you entered does not exist in our system. Please enter the email address you used to sign up.");
string randomString = SecurityHelper.GenerateRandomString();
user.Password = SecurityHelper.GetMD5Bytes(randomString);
_userRepository.Save();
EmailHelper.SendPasswordByEmail(randomString);
if (Request.IsAjaxRequest())
return Json(new JsonAuth { Success = true, Message = "Your password was reset successfully. We've emailed you your new password.", ReturnUrl = "/Home/" });
else
return View();
}
Is it correct to throw an exception in this case when the user is null? Or should I instead do this and handle it in the success handler of the jquery post: return Json(new JsonAuth { Success = false, Message = "The email you entered does not exist in our system. Please enter the email address you used to sign up.", ReturnUrl = "/Home/" });
I've been used to decorating data model classes with data annotation attributes, but the purist in me baulks slightly at including purely presentational attributes such as display format here. I am, however, quite happy to keep validation centric attributes here. One good reason I have to continue keeping all annotations etc. in the data model is that my view model aggregates data model classes, e.g.
my ViewModelBase.DetailItem<TEntity> property in the view model is just a reference to an entity class in my data model. If I wanted to move presentational annotations to the view model, I would have to quite radically revise my design to one where I duplicate data model properties in my view model and use an object mapping tool to populate view model objects based on data model objects.
[code]....
Say I got a domain model as follows: (and my repository expect an instance of this object)
[Code]....
And a view model (which my views are based on)
[Code]....
At the moment I got it like this and have my controller action manually create a new Person object from the PersonModel object before passing it on to the repository, which does not feel right.
So I tried to have PersonModel inherit from Person and pass that to the repository (also tried casting the PersonModel to a Person object first), but that don't work out.
What's the right way to have PersonModel automatically cast to Person? I want to keep this logic as my current structure allow me to keep things really loosely coupled, with the repository layer not having a clue how it's being used.
I wanted to use tracing to capture errors and programmatically send reports via email and text message...that if the ADMIN is eating out at a restaurant on a saturday nite he can see the text message/email to notify and capture..any way to do this??
View 1 RepliesI have an entity object as model input in my view. Not sure if it's the best approach, but I use the object references to get values from a related object.Let's say I've got a car entity and a manufacturer entity.Here's how it would look in my view
[Code]....
I've get a nullreferenceexception where the car entitity does not have a reference towards manufacturer. I'd like to output a " " if no manufacturer exists.
one thing that has been puzzling me since learning MVC2 is the following case scenario: I have a view which contains two latest news lists, a login form and a signup form. Every example I found on Views and View Models so far has a one-to-one example such as a simple login form etc. But how do I create a model that provides the properties and validation for a login and signup form and manages the data for the news lists. can I pass multiple models in the strongly typed view? When I created one model the form validation would fail as it expects all fields - login and signup to be filled. I am missing some advanced examples or information.
View 2 Repliesmaking my first steps with asp.net mvc and I actually create a (very) small website.I have 1 controller : TasksController1 view : Tasks/Index.aspx1 Partial View : Tasks/AvailableSorting.ascx In my controller I have 2 methods :
[Code]....
In my Tasks/Index.aspx, I add my partial view (<% Html.RenderPartial("AvaliableSorting"); %>)
That sounds simple. But, It just doesn't work : the Index return a list of Task and the parial view (should) return a list of string.The index.aspx works perfectly, but the partial view doesn't get the right model ! he gets the model of the Index page (list of Task).
I would like to add a partial view to my view page
The view page contain a mode name "<IEnumerable<JvTake1.Models.VortN>>
And the partial view contain a model name "<IEnumerable<JvTake1.Models.VideoL>>"
So, theoretically I think they were suppose to work together but no Can any one guide me how to make it happen?
I've got problem with my app .
I've got such classes (this is some kind of tree structure):
[Code]....
[Code]....
in Index() action i've got this piece of code
[Code]....
[Code]....
I am totally a new bee in asp.net mvc. Let me now explain my issue. I have a strongly typed view which inherits from a view model Document. I want to have a partial view in that view itself. My code for this purpose is :
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<HexsolveMVC.Models.Document>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
DetailsDocumentTemplate
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div>
<div>
<div>
2.4</div>
<div>
Published</div>
<h1>
Document Title: <span>
<%=Model.DocTitle %></span><span><a href="#">[ Edit ]</a></span></h1>
<ul>
<li>
<label>
<span>*</span>Created Date:</label>
<span>
<%= Model.DocCreatedDate%></span></li>
<li>
<label>
Status:</label>
<span>.................................
I'm converting a bunch of FOXPRO / FOXWEB apps to ASP.NET.
The underlying DB is still foxpro (for the moment).
I am passing a table to some VB.NET code that I want to have converted to a CSV file and sent back to the client for download. And it works! Sort of ... It works sometimes, but at other times, instead of asking me if I want to download the CSV file, it just spews the file to the browser window.
On the asp side, I am passing the response object, the table and the csv file name.
[Code]....
I have a view that is not strongly typed. However I have in this view a partial view that is strongly typed.How do I do I pass the model to this strongly typed view?I tried something like
public ActionResult Test()
{
MyData = new Data();
MyData.One = 1;
return View("Test",MyData)
}
In my TestView
<% Html.RenderPartial("PartialView",Model); %>
This give me a stackoverflow exception. So I am not sure how to pass it on. Of course I don't want to make the test view strongly typed if possible as what happens if I had like 10 strongly typed partial views in that view I would need like some sort of wrapper.
I would appreciate if anyone can give me some tips or ideas on a scenario I am working on. For instance, I have an asp.net solution and a webservice. I am sending data to the webservice which updates the settings, and while its doing it I would like the asp.net solution (website) to have a sort of log on the screen showing the user whats happening/which settings are being updated...Now from the webservice, while the settings/updates are being done, is it possible to send a request/state back to the asp.net project while that setting is being updated, rather than sending 1 setting at a time?
View 8 RepliesI've been going at this for several hours and I simply cannot find the solution.
I want to get some data from my user. So first, I use a controller to create a view which receives a Model:
[code]...
The rest of this controller does not matter since no matter what I do, the count attribute of Request.Files (or Request.Files.Keys) remains 0. I simply can't find a way to pass the files from the form (the Model passes just fine).
I tried to follow the example here: [URL] I pointed my .aspx page to Northwind > Employees, because that table already has a field for pictures, and a few data points, so I thought it would make sense to use that. I followed the instructions and set my DataImageUrlField to ProfilePicture. I'm not sure where the images go, or even where 'ProfilePicture' goes, so I created a new folder in my project and named the folder 'ProfilePicture' and put the pictures in there. So, now I have this kind of setup: C:Documents and SettingsThinkPadDesktopWebSite1Profile_Pictureimage1.jpg
Then I loaded the page and all data loads into the DatGrid fine, except for the images. So I copy/paste the code into 'Default.aspx.vb' and I debug and get this error: Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: ASPNET: Make sure that the class defined in this code file matches the 'inherits' attribute, and that it extends the correct base class (e.g. Page or UserControl)............
My problem is that though there are values in the modelstate, the error messages are not being displayed in the View. What is wrong with my code?
[Code]....
I have an application that interact with a SMS gateway and after successful delivery of message to my application i will like to acknowledge them by sending HTTP 200 Response to the Gateway, how can I do that suing asp.net. I am thinking of using Response Headers parameter to do that.
View 3 Replies