Collect The Chosen Value From A Html Select Element And Insert?
Apr 14, 2010
I am trying to collect the chosen value from a html select element and insert it into an SQL Server 2005 database and I get the following exception caught:
Failed to convert parameter value from a HtmlSelect to a String. (I've been converting everything to String before submission to the DB using ToString();
I have a View that has a select drop-down list and an edit button within a form. What I want to do is have the user select one of the options from the select element, click on the edit button, and get the value of the selected option in the Controller method.
I created my form with <% Html.BeginForm(): %>
and the Controller "Edit" method should be called.
I looked through several online examples, but each one focused on how to set values and the default selected value of the select element, rather than retrieving it from the code in the Controller method. I tried grabbing it from the Request.Form collection like:
string val = Request.Form["myDropDownList"].ToString(); and also: string val = Request.Form["myDropDownList"];
Obviously I didn't do this correctly, because I get a null reference exception. Does anyone have the solution to this issue?
I love MVC, coming from WebForms development, but there are things that don't make any sense to me. The "Error executing child handler" occurs anytime a vast number of things happen, for instance. It's very close to a useless message. In order to get the actual cause, I click on Debug/Exceptions and check the "Common Language Runtime Exceptions", and then reload the View. Presto! It shows the cause of the error.
Another thing I'm wondering about today is the FormCollection value of the Html.CheckBoxFor control. Checkboxes in general seem badly designed in html, and MVC didn't improve on it much. When processing a POST, if a regular checkbox isn't checked, it simply won't show up in the list of posted elements. Great. Instead of just grabbing it by name in the FormCollection and testing its value, instead I have to test whether or not it exists in the FormCollection. Not very intuitive. The Html.CheckBoxFor is a variant on the same theme. It always shows up in the FormCollection, but with a similarly non-intuitive return. If it's not checked, it yields a value of 'false', which can simply be converted to boolean and processed as normal. But if it is checked, it returns 'true,false'. Super. Now, instead of converting its value to a boolean directly, I have to test the string returned for the index of 'true' and return that instead.
I find this close to as aggravating as the Linq To Sql Sum() method bug. If I run a Select() method on a given numeric property and run Sum() to add them all together, if an empty result set is returned by the query it throws an exception. Now, if I was looking at a bunch of totals to add together, and none of them had anything entered, what would I write in the sum box? Error? Exception? Nope, it would be zero. I fully understand that if no results were returned then nulls cannot be added, but according to the intitial documentation this method was supposed to return zero in such an instance regardless, because that's just common sense. Enough of that rant. Does anyone know why this return value was chosen for Html.CheckBoxFor?
I have a few scattered <p> elements on the aspx page which I am grouping together using a class like so - <p class="instructions" runat="server">
In my code behind, using C# I want to hide these elements, using something like instructions.Visible = false;
However I realize I can only do this in codebehind if I use ID but this will result in invalid HTML/CSS Selector since you can't have multiple ID's with the same ID name...
Alternatively is there another way to group the controls if not by class?
EDIT: I can't use JavaScript, so the selection must be done in C# codebehind/ASP.NET
I am trying to auto fill city and state value after user typing 5-digit zip code. The Ajax part works perfectly, the problem is I have two sets of zip/city/state fields in one web page. I searched this issue for quite a while, using next(),nextAll() even slice(), none of them work in my situation.
Web page related part:
[Code]....
After using Ajax function I get returned value for city and state. For each city textbox I give a "city" class, for each state dropdownlist I give a "state" class. I wonder how can I put those value into right position?
To demonstrate that I could even use a Class attribute on an option elem I tried adding class attributes to options of a select elem in a static page and that works fine. I noticed that not many online resouces documented this so I figured I would explicitly set the record.
here is the jquery code attempting to add a class to the selected option
[Code]....
New information, I found the reason nothing occured was a simple mistake in the value being passed in for compLev. However, now it runs through the code for the correct case and does nothing to the color of the item.
For coonverting Linq to DataTable I am using the following Extension Method(Taken from Stackoverflow)
L[code]....
The Extension Method creates XML file.But for null values no element is created in XML file.Say if Commission field is null then commission element is missing in Xml generation.
I want to insert element with empty string for null values (ref type) and (0.00) for decimals and (0) for integers. where do i need to make change?
i have a select element with few items and the script.
[Code]....
on selection of any item from the dropdownlist how can i get the text selected from dropdown in the javaScript function that i have provided in onchange event handler ?
i have 3 dropdownlist, they are populated in cascade, dropdownlist2 info depends on dropdownlist1, and go on, i put the autopostback = true to the dropdownlist1 and dropdownlist2, but when i tried to select a diferent value in the dropdownlist2, it comes back to the first element, of course, i am doing a postback, the dropdownlist1 populate, and the dropdownlist2 datasource depends on the dropdwonlist1.selectedvalue, and put the same element no the last selected.
Using the HTMLHelper's strongly typed methods on an instance of UserAccount my HTML elements are given IDs like:
id="PhoneNumber" id="Credentials.Username"
This is awesome, it's great really. What I want is to be able to generate the same ID for a property in my controllers. My purpose is to link some additional error messages to the ID's. I can always just guess what it will be and enter it into the code, but I prefer to have a strongly typed way to do this. Does on exist?
But the problem is, I create the ID dynamically and I have multiple tables with IDs like "table1","table2", and so on....
string idFromDB = ... // retrieve the number from the database string fullId = "table" + idFromDB; HtmlTable tbl = .... get the element based on fullId .... ?????? tbl.Rows.Add( ... );
I am using ckeditor as my Rich Text Editor (RTE). This is an html element control and not an ASP control. I would like to use the RequiredFieldValidator (RFV) control to make this field required.
I cannot find any documentation stating that the RFV can be used like this. Can anybody tell me if this is possible?
Here's an example - notice that there is an html textarea element - how do I use RFV on this?
and it's not recognising that I added the span to the page. Is there something I need to do to make this happen? I have been working in MVC lately, so I haven't had to worry about the relationship between the page & code-behind in a while, but I can't remember any tricks that I had to perform to reference a HTML element in my code.
An error occurred during the processing of /_layouts/MyPage/Info.aspx. Literal expressions like '<%$Resources:wss,okbutton_accesskey%>' are not allowed. Use <asp:Literal runat="server" Text="<%$Resources:wss,okbutton_accesskey%>" /> instead
That doesn't work in this situation as that would mean nesting the Literal between the quotes of the accesskey attribute, which causes a "The tag contains duplicate 'ID' attributes" error.
Is there a way to use a string from a resource without having to change the input to an asp:Button? I guess there has to be a way using <%=, but I don't know how I would address the resource itself?
I'm trying to set a value for an HTML Element within my code-behind. I need to set a <div> elements "display" property to "inline". The way I have it coded is like this:
Code: divContact.Style("display") = "inline"
Is this the right syntax? I only ask because it doesn't seem to work but I don't get a run-time error when the statement is executes. ???
I've been hired to clean up a website that was written by another company. One of the main issues they have is that the navigation menu doesn't always match the content. On closer look, they didn't use a navigation control or an accordion, but made their own user control out of HTML UL's and LI's (see below). Each section is supposed to expand when you click on it to offer sub menus. Any how, I am trying to find a way when the content pages load to force the menu to focus on the correct UL. Any thoughts on how to do this? By the way they wrote this stuff in 2.0, which I guess maybe why they didn't use the Accordion from the AJAX Toolkit.
HTML Code: <div class="left-menu"> <div class="arrowlistmenu"> <h3 id="H3mymessage" class="menuheader expandable" onclick="RedirectBrowser(1)"> My Messages </h3>
[Code] ....
Redirect Browser is defined on the master page:
HTML Code: <script type="text/javascript"> function RedirectBrowser(ID) { if (ID == 1) window.location="MyMessageList.aspx?MessageFolderID=-1"; else if (ID == 2)
[Code] ....
Here is an example of how it is messed up. My Messages should be highlighted but My Profile is.
I'm trying to implement live binding, purely imperatively . In my example , I have a master view , which is populated using json array. In the detail view ,I'm just setting the value of a prepopulated combo box . But , the moment the bind statement is executed, the combobox (select element) becomes null. This works perfectly when done declaratively. Below is the code for imperative binding. This function is triggered when an item in the masterview is selected.
function execCommand(sender, args) { // Create dataview for details section var detailsView = $create(Sys.UI.DataView, null, null, null, $get("div2")); $get("div2").className = "sys-template"; // bind the dataview to the selected data from the master var b = Sys.bind(detailsView, "data", sender, "selectedData"); // after the above line of code is executed, the select element with id "myselect" becomes null. //alert($get("myselect")); // bind the value attribute of the combo box to the "Description" property of the binded data var x = Sys.bind($get("myselect"), "sys:value", detailsView.get_data(), "Description"); //hence when the above line of code is executed , nothing happens :( ,i.e the value of the combo box doesn't get set // alert($get("myselect")); }
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SysObserverSampe.aspx.cs" Inherits="SysObserverSampe" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">>....................................