无法正确地将表格行中的文本框值从视图传递到MVC5中的控制器

时间:2017-12-27 18:45:00

标签: asp.net asp.net-mvc

我正在尝试使用actionlink将3个值从视图发送到另一个操作。我有一张桌子。每行有3列,id,name和bid money是一个文本框。问题是动作链接只传递第一行文本框的值,假设我按下第二行的动作链接,它正在传递,第二行的名称和ID,但是文本框中的出价金钱,正在通过第一行。

我的观看代码:

@model List<UdemyMVC.Models.Movies>
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

<table class="table table-striped table-bordered table-hover">
    <thead>
        <tr class="danger">
            <th>
                Id
            </th>
            <th>
                Name
            </th>
            <th>
                Bid Money
            </th>
        </tr>
    </thead>
    <tbody> 
        @foreach (var movie in Model)
        {
            <tr>
                <td>
                    @movie.Id
                </td>
                <td>
                    @movie.MovieName
                </td>
                <td>
                    <input type="text" id="bidMoney" name="bidMoney"/>
                </td>
                <td>
                    @Html.ActionLink("Details", "Details", "Test", new { Id =movie.Id, MovieName = movie.MovieName }, new { onclick = "this.href += '&biddingMoney=' + document.getElementById('bidMoney').value;", @class = "btn btn-primary" })
                </td>
            </tr>
        }
    </tbody>
</table>

1 个答案:

答案 0 :(得分:1)

我认为你应该为bidMony的id添加一个索引,并使用该索引作为你想要的索引。我的剃刀现在完全生锈了

但声明索引

    @{ int i = 0}
    @foreach (var movie in Model)
    {

        <tr>
            <td>
                @movie.Id
            </td>

            <td>
                @movie.MovieName

            </td>
            <td>
                <input type="text" id="bidMoney@(i)" name="bidMoney" />

            </td>
            <td>

           @Html.ActionLink("Details", "Details", "Test", new { Id =movie.Id, MovieName = movie.MovieName }, new { onclick = string.Format("alert(document.getElementById('bidMoney{0}').value);",i), @class = "btn btn-primary" })



            </td>

        </tr>
      i++;
    }

我无法测试这个,但我认为这是你需要做的。问题是,你的getelementbyid看到了一堆bidMoney元素,但只能返回一个,所以它会给你第一个。