Przekazanie wartości przez POST w asp.net mvc 4

0

Piszę aplikację w ASP.NET MVC 4.
Mam kontroler User a w nim metodę Show, która przyjmuje dwa argumenty: nullable int i string.

        [HttpPost]
        public string Show(int? uid, string uname)
        {
            return uname + uid.ToString();
        }

Chcę za pomocą posta przekazywać wartości do tej metody. Problem polega na tym, że jakkolwiek nie próbuję to nie jestem w stanie tego zrobić.
Pokażę dwa sposoby (wzięte z przykładów z książek), które próbowałem.

Sposób pierwszy

            @using (Html.BeginForm("Show", "User"))
            {
                Html.Hidden("uid", Model.Id);
                Html.Hidden("uname", Model.UserName);
                <input type="submit" value="+"/>
            }

Problem: do metody trafiają nulle.

Sposób drugi

            using(Html.BeginForm("Show", "User", FormMethod.Post, new { uid = 1, uname = "user1" }))
            {
                <input type="submit" value="+"/>
            }

Problem: Razor generuje mi taki kod

<form action="/User/Show" method="post" uid="1" uname="user1">                <input type="submit" value="+"/>

A do tego do metody trafiają nulle.

2

Pozwolę sobie zacytować rozwiązanie:

Your HtmlHelpers are not being rendered. Use Razor syntax.

@using (Html.BeginForm("Show", "User"))
{
    @Html.Hidden("uid", Model.Id);
    @Html.Hidden("uname", Model.UserName);
    <input type="submit" value="+"/>
}

Explanation:

Calling Html.Hidden (or Html.[anything]) is a method and usually returns an IHtmlString. Without using @ infront, the engine doesn't know that you're trying to output the returned string. It just thinks you're calling a method.

http://stackoverflow.com/a/21841152/3321042

1 użytkowników online, w tym zalogowanych: 0, gości: 1