Сведения о вопросе

1234123213

04:44, 25th August, 2020

Теги

asp.net-mvc    

Создание собственной таблицы с кнопками CommandArgument в ASP.NET MVC

Просмотров: 379   Ответов: 4

Я пытаюсь реализовать что-то вроде этого:

<div>
    <table>
        <thead>
            <tr>
                <td>Port name</td>
                <td>Current port version</td>
                <td>New port version</td>
                <td>Update</td>
            </tr>
        </thead>
        <% foreach (var ip in Ports) { %>
            <tr>
                <td>
                    <%= ip.PortName %>
                </td>
                <td>
                    <%= ip.CurrentVersion %>
                </td>
                <td>
                    <%= ip.NewVersion %>
                </td>
                <td>
                    <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandArgument="<% ip.PortName %>" />
                </td>
            </tr>
            <% } %>
    </table>
</div>

Свойство CommandArgument кнопки-это то, где мой код жалуется на то, что не может разрешить символ ip . Есть ли способ сделать то, что я пытаюсь сделать?



  Сведения об ответе

#hash

13:40, 14th August, 2020

Вы не хотите использовать кнопку Webforms в ASP.NET MVC. MVC-это совершенно другой способ работы, и у вас больше нет абстракции WebForms.

У вас есть 2 различных варианта, вы можете либо заменить ваш asp:Button на входной тег, либо использовать вместо него стандартную гиперссылку. Если вы используете опцию ввода, то вам нужно будет обернуть элемент формы. Действие формы должно указывать на действие контроллера.


  Сведения об ответе

darknet

06:59, 2nd August, 2020

Вы не можете использовать элементы управления webform в ASP.NET MVC тривиальным образом, потому что они полагаются на вещи, которые вычеркнуты в MVC. Вместо этого вы добавляете кнопку двумя способами, используя HtmlHelper на ViewPage :

Вы можете добавить кнопку в форму, которая легко обрабатывается в контроллере, если у вас есть форма для каждой отдельной кнопки:

<% using(Html.BeginForm("Update", "Ip", new {portName = ip.PortName} )) { %>

    ....
    <input name="action" type="submit" value="Update">

<% } %>

BeginForm() будет по умолчанию использовать тот же контроллер и действие, из которого было создано представление. Другой способ-вместо этого добавить ссылку, которая больше подходит к вашему примеру итерации по списку. Например, допустим, у вас есть IpController

<%= Html.ActionLink("Update IP", "Update", "Ip", 
        new { 
            portName = ip.PortName 
        }) 
%>

Ссылка перейдет на действие обновления в IpController с заданным параметром portName в качестве параметра. В обоих случаях вам понадобится это действие в IpController:

public ActionResult Update(string portName) {
    // ...
}

Надеюсь, это поможет.


  Сведения об ответе

repe

18:53, 7th August, 2020

Я думаю, что вы должны заключить свой блок в форму тегов ans runat=server.


  Сведения об ответе

baggs

06:06, 19th August, 2020

Чистки рядов,

Я думаю, что в этом тексте отсутствует знак равенства:

CommandArgument= " <% ip.PortName %>"

Должно быть

CommandArgument= " <%= ip.PortName %>"


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться