3

I´m working with MVC razor and I have a small issue in the view part...

To resume, I have a loop with different elements, with each element I have two buttons, one download and another request. My problem is with the "request" one... I need that when I click on it, I post the ID of the element...

this is part of my code:

enter code here <div class="contentsection" style="border-bottom:1px solid orange;">
<table style="width:100%;">
    <thead>
       ...
       ...
    </thead>
    <tbody>
        @foreach (DownloadItem di in group.Items)
        {
        <tr>
            <td class="bold">@di.DisplayName</td>
            <td>
                @using (Html.BeginForm("Download", "MyController", new { id = di.ID }, FormMethod.Post, new { style = "display:inline;" }))
                {
                    <input type="submit" id="download" value="Download" />
                }
                    <input type="button" id="request" value="Request" onclick="somejavascriptmethod(@(di.ID))" />
                    <span id="requestDate">@(di.requestDate)</span>                    

            </td>
        </tr>
        }
    </tbody>
</table>

My problem is that when the User click the Button "request", my function "somejavascriptmethod(id)" is called and I need the id as a parameter... ALthough I get a syntac error, I though it could work... but it does not... I dont "post" the id and I get the "500 Internal Server Error"...

thanks in advance for the Help!

7
  • Please post the output of this view (the html source) and your javascript code. Commented Aug 30, 2013 at 12:05
  • My problem is here: onclick="somejavascriptmethod(@(di.ID))" I dont know how to "post" the ID.... Commented Aug 30, 2013 at 12:06
  • I mean add the output source to your question, so we can see what's happening. Commented Aug 30, 2013 at 12:11
  • @minoyo, Where do you want to post? Commented Aug 30, 2013 at 12:16
  • @minoyo what do you mean by post? You want to pass ID to controller? Commented Aug 30, 2013 at 12:27

4 Answers 4

3

You are creating multiple input's with the same ID (request). HTML ID's should be unique.

As an alternative approach to what you require, you could use a data-attribute

<input type="button" data-id="@(di.ID)" value="Request" />

And use jQuery to handle which ID you need:

   $("input[type=button]").click(function() {
      var id = $(this).data("id");
      yourJSFunction(id);
   });

http://jsfiddle.net/XAffc/

Sign up to request clarification or add additional context in comments.

2 Comments

I dont mean the button ID... in my loop I have my type DownloadItem with different attributes.. one of then is the ID, and that ID is the one i need...
@minoyo - yes - you are using the downloaded item ID in the data-id attribute
3

If your value is not an integer then you have to use it like following

<input type="button" id="request" value="Request" onclick="somejavascriptmethod('@(di.ID)')" />

Comments

0

Try this,

 <input type="button" value="Assign" onclick="myfunction(@di.ID);" />

function myfunction(obj) {

        var id = obj;
        alert(id);//this way you can get your id.
      }

Comments

0

try this

 <input type="button" id="request" value="Request" onclick="somejavascriptmethod('@di.ID')" />

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.