1

ボタンをクリックしてアクションを実行したいコードを以下に示します--->

<% if(Model!=null && Model.Count>0){%>
<ul>
<% foreach(var Movie in Model)
        {
            %> <li> <%= Movie.Id %>  
            <%= Movie.Title %>  
            <%= Movie.ReleaseDate %> 

            <input type="button" value="edit" name="edit" onclick="EditMovie" /> 
            <input type="button" value="delete" name="delete" /> </li> 
            <% } %>
<% } %>
</ul>

やるべき機能がいくつかありますが、これらのボタンをこれらのコントロールにリンクするにはどうすればよいですか?

4

5 に答える 5

2

ボタンごとに個別のフォームを作成できます。

<ul>
    <% foreach(var Movie in Model) { %> 
    <li> 
        <%: Movie.Id %>  
        <%: Movie.Title %>  
        <%: Movie.ReleaseDate %> 
        <%= Html.BeginForm("EditMovie", "Movies", new { id = Movie.Id }, FormMethod.Post) { %>
            <input type="submit" value="edit" name="edit" /> 
        <% } %>
        <%= Html.BeginForm("DeleteMovie", "Movies", new { id = Movie.Id }, FormMethod.Post) { %>
            <input type="submit" value="delete" name="delete" /> 
        <% } %>
    </li> 
    <% } %>
</ul>

次に、2つのそれぞれのコントローラーアクションがあります。

[HttpPost]
public ActionResult EditMovie(int id)
{
    ...
}

[HttpPost]
public ActionResult DeleteMovie(int id)
{
    ...
}

フォームを使用する代わりに、AJAXを使用できます。

<ul>
    <% foreach(var Movie in Model) { %> 
    <li> 
        <%: Movie.Id %>  
        <%: Movie.Title %>  
        <%: Movie.ReleaseDate %> 

        <%= Ajax.ActionLink(
            "edit", 
            "EditMovie", 
            "Movies", 
            new { id = Movie.Id }, 
            new AjaxOptions { HttpMethod = "POST" }
        ) %>

        <%= Ajax.ActionLink(
            "delete", 
            "DeleteMovie", 
            "Movies", 
            new { id = Movie.Id }, 
            new AjaxOptions { HttpMethod = "POST" }
        ) %>
    </li> 
    <% } %>
</ul>

ヘルパーを使用する場合は、ページにスクリプトjqueryとスクリプトを含めることを忘れないでください。jquery.unobtrusive-ajax.jsAjax.ActionLink

于 2013-01-04T13:05:16.370 に答える
0
You can handle form action with Jquery.

$(document).ready(function(){
    $('.button-edit').on('click', function(e){
        $('#formMovie').attr('action','/edit/'+ someParameter)
    });
    $('.button-delete').on('click', function(e){
        $('#formMovie').attr('action','/edit/' + someParameter)
    });
});
于 2013-01-04T14:08:32.173 に答える
0

最も簡単なアプローチは?このようなもの:

<% if(Model!=null && Model.Count>0){%>
<ul>
    <% foreach(var Movie in Model) { %> 
        <li>
            <%= Movie.Id %>  
            <%= Movie.Title %>  
            <%= Movie.ReleaseDate %> 
            <% using (Html.BeginForm("EditMovie")) { %>
                <%: Html.Hidden("Id", Movie.Id) %>
                <input type="submit" value="edit" name="edit" /> 
                <input type="submit" value="delete" name="delete" /> 
            <% } %>
        </li> 
    <% } %>
</ul>
<% } %>

そして、コードビハインドで:

public ActionResult EditMovie(int Id, string edit, string delete)
{
    if (delete != null)
    {
        // delete 
    }

    if (edit != null)
    {
        // edit
    }

    return View();
}
于 2013-01-04T13:08:19.070 に答える
0
    foreach {
...
        <button type="button" class="btn btn-default editButton" id="movie_@Movie.Id">Edit</button>
...
    }

@section Scripts {
    <script type="text/javascript">
    $(document).ready(function () {
        $("editButton").click(function () {
            var id = this.id.split("_")[0];
            location.href = '@Url.Action("EditMovie", new RouteValueDictionary() { { "Controller", "Movie" } } )?id=' + id;
        });
    });
    </script>
}
于 2013-10-25T12:16:58.050 に答える
0

ハンドラーを接続するための jQuery は次のようになります。

    $(document).ready(function(){
    $('input[type="button"]').on('click', function(e){
        // etc
    });
});
于 2013-01-04T13:13:06.493 に答える