Retrieve Selected Item from Dropdownlist In MVC 3 Razor - asp.net-mvc-3

I have a list in the controller and my code looks like this.
ViewBag.Organizations = _frontendUserService.GetOrganizationByClientId(Constants.ClientId);
And I'm setting this list in my View Page with a Dropdownlist.
#Html.DropDownListFor(
model => model.Organization.OrganizationId,
new SelectList(
ViewBag.Organizations as System.Collections.IEnumerable,
"OrganizationId",
"OrganizationName"),
"-- Select Organization --")
Here I get the OrganizationId as the selected item. Instead I want to retrieve the selected item as an "Organization" object in the POST request to my action method.
Actually why I wanted to get the entire object here is, because when I'm querying the database by OrganizationId I'm getting following error.
Error: sequence contains more than one matching element
In my application I'm using repository pattern.

It could be done, but I don't see the point in it. It's most likely a lot more efficient to fetch it from the database again instead of trying to do what you are asking.

I was trying to do something similar, but struggled - ended up using some of the code of this site and the generator tool, works quite well: http://www.mvc3razor.com/sample-code/

Related

Getting Document Collection in Lotus Notes using the Form UNID

I have the UNID of a Lotus Notes form. can i use this UNID to get the Document Collection of that form ??
I am using the NotesDatabase.Search() method to get the document collection. But this query only works if it is provided with the Form Name. Does not works works with the Form UNID.
I am trying to do this because in my application there are two forms with the same name and Alias name.
Short answer: This is NOT possible.
Documents are linked to the Form via their own Form- item. This is a textitem and contains the alias of the form they were created with. There is NO further relation between the form that was "really" used when creating a document. As soon as you create another Form with that alias and delete the old one, all documents will use the new one. As long as there are 2 forms with the same alias, one of them will be used by chance (usually the one with the smaller NoteID will be used, but this can not be guaranteed).
If your question is to find out, which documents where created with which of the forms the only possibility is to select them according to special fields in the forms. If e.g. one form has an item "CreatedDate" and the other does not, then you could select #IsAvailable( CreatedDate )
Unfortunately if you open a document that was created with the "old" form and save it, it will also have the new item... So this will never be a 100% solution.
To make it even harder: One could create a document using LotusScript and in the end just fill the Form- item: doc.Form = "SomeForm". Then the document was not created with either of your two forms...

creating a form field populated by a relationship in Laravel 4

I am trying to build a form for a Happening. The Happening references a Places table by place_id.
e.g. happening "OktoberFest" has a place_id 123 which corresponds in table Places to München
These are the relationships declared in the models:
For model Place:
public function happenings()
{
return $this->hasMany('Happening');
}
For model Happening:
public function place()
{
return $this->belongsTo('Place');
}
model Happening has a place_id field linking it to Place.
I am also using {{Form::model($happening, array('route' => array('happenings.update', $happening->id)...}} as form opening
Problem 1: how to create a {{Form::text('......')}} that will be properly prefilled with München when editing the happening Oktoberfest ?
Problem 2: I was trying to get that field to work as an ajax autosuggest (i.e. starting to pull suggestions from the Places table as soon as 3 characters have been entered). I have checked a few implementations but they don't seem to mix correctly with Problem 1
To try and solve Problem 1, I have tried the solution here
Laravel 4 Form builder Custom Fields Macro
but I was unable to make it work.
Long question, it's my very first on stack overflow, please be patient :)
If a Happening is linked to Place via the column 'place_id' you have to supply an id to save in your model/table.
There are a couple of ways that I can think of:
make a list of availble Places in a radio of select, the name will be 'place_id', the value the id of the Place en something like title for the value.
instead of displaying radio's or a select a textfield with autocomplete is a great solution if you got a lot of places. I won't go into detail how to implement it but the general idea is to autocomplete the typed in placename and on selection of that place to put the id of that place in a hidden field named 'placed_id'
After saving the form save your model with the posted place_id
(and check that id if it's valid and existing, never trust user input )

mvc-3 dropdown binding-razor

I have a table in the database called Person and it has various fields like id(Guid), forename and lastname. I am pulling them from the database using the following code
There is a method called GetAll, Which returns the List items.
In controller:
ClassService p= new ClassService();
ViewData["Id"]= new SelectList(p.GetAll(),"id","Forename");
In View:
#Html.DropDownList("Id_0",((SelectList)ViewData["Id"]).Items,"none")
It complains that there is acompilation error.What is wrong in there? and if it compiles does it loads into the dropdown box?
Could anybody tell is this correct of doing it or am I missing anything.
Thanks
Html.DropDownList() takes the name you want the select to be called and then an IEnumerable of SelectListItem(). Remove the .Item second parameter and it should work. The third parameter is the value of the selected item. So I am not sure what passing "none" will do other than not select anything in the dropdown list.
Also I am not sure how you will be handling the binding to a model when you post the form. Dont forget to have a integer called Id_0 as a parameter to the [HttpPost] action menthod.

Model Data Type versus View Control

I have having a little trouble wrapping my head around the design pattern for MVC when the data type of the model property is very different than what I wish to display in a form. I am unsure of where the logic should go.
Realizing that I am not really sure how to ask the question I think I will explain it as a concrete example.
I have a table of Invoices with a second table containing the InvoiceDetails. Each of the InvoiceDetail items has an owner who is responsible for approving the charge. A given invoice has one or more people that will eventually sign off on all the detail rows so the invoice can be approved. The website is being built to provide the approval functionality.
In the database I am storing the employee id of the person who approved the line item. This schema provides me a model with a String property for the Approved column.
However, on the website I wish to provide a CheckBox for the employee to click to indicate they approve the line item.
I guess my question is this -- how do I handle this? The Model being passed to the View has a String property but the form value being passed back to the Controller will be of the CheckBox type. I see two possible ways...
1) Create a new Model object to represent the form fields...say something like FormInvoiceDetails...and have the business logic query the database and then convert the results to the other type. Then after being submitted, the form values need to be converted back so the original Model objects can be updated.
2) Pass the original InvoiceDetails collection to the View and have code there create render the CheckBox based on the value of the String property. I am still not sure how to handle the submission since I still need to map back the form values to the underlying database object.
Maybe there is a third way if not one of these two approaches?
To make the situation a bit more complicated (or maybe it doesn't), I am rendering the form to allow for the editing of multiple rows (i.e. collection).
Thanks for any insight anybody can provide.
You need a ViewModel, like #Justn Niessner suggests.
Your controller loads the complete model from the database, copies just the fields it needs into a ViewModel, and then hands the ViewModel off to the view for rendering.
I'd use Automapper to do the conversion from Model to ViewModel. It automates all the tedious thingA.x = thingY.x; code.
Here is an additional blog post going over in detail the use of ViewModels in the Nerd Dinner sample.
I believe what you are looking for is the ViewModel.
In cases where you are using a ViewModel, you design the ViewModel to match the exact data you need to show on your page.
You then use your Controller to populate and map your data from your Model in to your ViewModel and back again.
The Nerd Dinner ASP.NET MVC Example has some very good examples of using ViewModels.

Linq to Entities, EntityReferences and DataGridViews

I am trying to select certain fields from my entity to be used as the datasource for a datagridview, but I haven't been able to make it work. Is such a thing possible? For example, I have a Customers entity that contains several entityreferences. I want to take fields from the customers entity and from within those entityreferences and display them in the datagridview. I haven't been able to come up with a Linq query to accomplish this, and even when you simply use the entire entity as the datasource the fields within the entityreferences are not displayed. Any idea what I am doing wrong? Thanks for the help.
from customer in context.customers
select new
{
Name = customer.Name,
City = customer.Address.City
}
that will create a custom object and you can see the second property is referencing an entity field on the primary entity.. basically just transform the data to a new object and bind the enumerable generated to the grid.
sorry if this is a little mumbled, typing on my phone.
Caveat: This is not tested with entity framework references.
When using object data sources you can reference properties of object references, but you must first cast the object:
<asp:Label ID="lblCity" runat="server" Text='<%# ((Customer)Container.DataItem).Address.City%>'></asp:Label>
Could this be your problem accessing properties of the entity references?

Resources