H4mm3rHead
H4mm3rHead

Reputation: 573

ASP.NET MVC: set value in other field on my view, how to?

I have a view where the user can change some settings, its basically a "edit" page. When the user checks a particular value in a radio group i set a hidden field (its a invisible input type=text field), but when i load the page i want that hidden field set from my code. How to do this? JQuery? or can i "findControl" somehow?

This is the "hidden" field:

<div style="display: none">
<input type="text" name="HiddenImageId" id="HiddenImageId" value="" />
</div>

The above hidden field is set from a jquery that executes when a radio-button is clicked. But when I load in "edit" mode I want myself to set the "hidden" field.

Further down my view i load all the radio-buttons:

<% if (file.Id == imageFile.Id)
   { %>
        <input type="radio" checked="checked" name="filename" class="filename" id="<%= file.Id.ToString()%>" />
<% }
   else
   { %>
        <input type="radio" name="filename" class="filename" id="<%= file.Id.ToString()%>" />
 <%} %>

When I set the checked attribute I want to set the value of my hidden fiddle to the files ID.

Upvotes: 0

Views: 1672

Answers (3)

Tomas Aschan
Tomas Aschan

Reputation: 60564

You would probably benefit a lot from making better use of the [Html Helpers] in ASP.NET MVC.

You could, for example, output your "hidden" text input like this:

<%= Html.TextBox("HiddenImageId", imageFile.Id) %>

If imageFile can be null, you might want to add a check for that - use shorthand if to make it look nice:

<%= Html.TextBox("HiddenImageId", imageFile != null ? imageFile.Id : "") %>

You could also probably improve your code for the radiobuttons significantly by using Html.RadioButton...

Upvotes: 1

tvanfosson
tvanfosson

Reputation: 532435

I'd suggest using the HtmlHelper extensions in both cases.

<div style="display: none">
   <%= Html.TextBox( "HiddenImageId",
                     file.Id == imageFile.Id ? file.Id.ToString() : "" ) %>
</div>

<%= Html.RadioButton( "filename",
                      "",
                      file.Id == imageFile.Id,
                      new { @class = "filename", id = file.Id.ToString() } ) %>

or if you wanted to use a hidden input instead, skip the invisible DIV, and use

<%= Html.Hidden( "HiddenImageId", 
                 file.Id == imageFile.Id ? file.Id.ToString() : "" ) %>

Upvotes: 1

Andrew Bullock
Andrew Bullock

Reputation: 37378

just like you are doing

id="<%= file.Id.ToString()%>"

you can do

<input type="text" name="HiddenImageId" id="HiddenImageId" value="<%= file.Id.ToString()%>" />

or whatever the code is to get your value

Upvotes: 1

Related Questions