views:

35

answers:

1

Hello Everyone.

I am new to jQuery. I have a Html.TextArea called "CommentPost" displayed for each item in a foreach loop. I am trying to return the data typed into my text area as a parameter in my ActionLink call. The first parameter item.CommentId get populated correctly but the second one item.CommentPosting evaluates as null. I thought that maybe a jQuery call - when the ActionLink gets selected - could sort this out for me. I have been trying to solve this for hours now but am not getting any closer. I know that $('#CommentPost').attr("value") gives the correct text but how to put it all together is beyond me. Please help

<% foreach (var item in Model.Comments)
   { %>
    <%= (item.UserName ) %>
<%= Html.TextArea("CommentPost", item.CommentPosting)%>
<%= Html.ActionLink("Save", "CommentPosting", new { commentId = item.CommentId , commentPost =item.CommentPosting})%>
<% }%>

The shell of my controller code looks as follows:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult CommentPosting(int commentId, string commentPos)
{

}
A: 

Ok I solved it ...eventually(after praying for inspiration)!

This is what I did :

I modified my HTML.Actionlink by hardcoding the value "test" for my commentPost parameter and then hooked a new javaScript call GetData(link) to the onClick event. This javascript call changes the hardcoded value to the correct value:

<%= Html.ActionLink("Save", "CommentPosting", new { commentId = item.CommentId, commentPost = "test" }, new { onClick = "GetData(this);" })%>

Then I created my JavaScript function:

function GetData(link) {
    var temp = link.previousElementSibling;
    link.originalHref = link.originalHref || link.href;
    link.href = link.originalHref.replace("test", $(temp).attr("value"));
    return true;
}

Well Thank Goodness it all works now!

Katey