如何将选定的行传递给控制器​​?

时间:2019-10-24 06:44:05

标签: c# asp.net-core-mvc

 @foreach(var list in CorpDetails){
    <tr>
        td><input type="button" id="btnSelect" value="Select" class="btn btn-info" /></td>
        <td>@list.SAMID</td>
        <td>@list.CorporateID</td>
        <td>@list.CorporateName</td>
        <td>@list.BUName</td>
        <td>@list.TotalAmount</td>
        <td>@list.approver1</td>
        <td>@list.approver3</td>
        <td>@list.approver4</td>
        <td>@list.approver5</td>
   </tr>
 }

我想通过单击btnSelect将选定的行传递给Controller,但我不知道如何。

3 个答案:

答案 0 :(得分:1)

好的,作为基本示例,您可以添加一个复选框字段,并假设class Window(QWidget): # ... def create_page3(self): # ... page.viewmenubutton.clicked.connect(self.openviewforday) def openviewforday(self): weekDay = self.page1.calendar.selectedDate().dayOfWeek() if weekDay == 1: # do something for Monday elif weekDay == 2: # do something for Tuesday # etc... 是数据库中的标识符,您可以执行类似的操作,希望对您有所帮助你出来:

SAMID

在您的@using (Html.BeginForm("ProcessInformation", "Home", FormMethod.Post, new { @id = "myFormId", @class = "form-horizontal", role = "form", enctype = "multipart/form-data" })) @Html.AntiForgeryToken() { @foreach(var list in CorpDetails) { <tr> <td><input type="checkbox" value="@list.SAMID" name="childChkbox" id="checkAll" /></td> <td>@list.SAMID</td> <td>@list.CorporateID</td> <td>@list.CorporateName</td> <td>@list.BUName</td> <td>@list.TotalAmount</td> <td>@list.approver1</td> <td>@list.approver3</td> <td>@list.approver4</td> <td>@list.approver5</td> </tr> } <input id="submitform" type="submit" value="Process Information" class="btn btn-primary btn-md" /> } 中:

Controller

答案 1 :(得分:1)

这是一个工作示例,如下所示:

1。型号:

public class CorpDetail
{
    public int SAMID { get; set; }
    public int CorporateID { get; set; }
    public string CorporateName { get; set; }
    public string BUName { get; set; }
    public int TotalAmount { get; set; }
    public string approver1 { get; set; }
    public string approver3 { get; set; }
    public string approver4 { get; set; }
    public string approver5 { get; set; }
}

2。视图:

@model IEnumerable<CorpDetail>
<table>
    <tr>
        <th></th>
        <th>SAMID</th>
        <th>CorporateID</th>
        <th>CorporateName</th>
        <th>BUName</th>
        <th>TotalAmount</th>
        <th>approver1</th>
        <th>approver3</th>
        <th>approver4</th>
        <th>approver5</th>
    </tr>
    @{
        var i = 0;
    @foreach (var list in Model)
    {
        <tr>
            <td>
            <input type="button" id="@i" value="Select" class="btn btn-info" onclick="test(@i)" /></td>
            <td id="SAMID">@list.SAMID</td>
            <td id="CorporateID">@list.CorporateID</td>
            <td id="CorporateName">@list.CorporateName</td>
            <td id="BUName">@list.BUName</td>
            <td id="TotalAmount">@list.TotalAmount</td>
            <td id="approver1">@list.approver1</td>
            <td id="approver3">@list.approver3</td>
            <td id="approver4">@list.approver4</td>
            <td id="approver5">@list.approver5</td>
        </tr>
        i++;
    }
  }
</table>

@section Scripts{
<script>

    function test(i) {
        var sAMID =parseInt($('#' + i).closest('tr').children('#SAMID').text());        
        var corporateID = parseInt($('#' + i).closest('tr').children('#CorporateID').text());
        var corporateName = $('#' + i).closest('tr').children('#CorporateName').text();
        var bUName = $('#' + i).closest('tr').children('#BUName').text();
        var totalAmount = parseInt($('#' + i).closest('tr').children('#TotalAmount').text());
        var approver1 = $('#' + i).closest('tr').children('#approver1').text();
        var approver3 = $('#' + i).closest('tr').children('#approver3').text();
        var approver4 = $('#' + i).closest('tr').children('#approver4').text();
        var approver5 = $('#' + i).closest('tr').children('#approver5').text();
        var data = {sAMID,corporateID,corporateName,bUName,totalAmount,approver1,approver3,approver4,approver5}
        $.ajax({
            type: "POST",
            url: "/Home/Contact",
            contentType:"application/json",
            data: JSON.stringify(data),
            sucess: function (data) {
                //...
            }
        })
    }
</script>
}

3.Controller:

public IActionResult Contact()
{
    var model = new List<CorpDetail>()
    {
        new CorpDetail(){ SAMID =1,CorporateID=1,CorporateName="aa",BUName="aa1",TotalAmount=10,approver1="a1",approver3="a3",approver4="a4",approver5="a5"},
        new CorpDetail(){ SAMID =2,CorporateID=2,CorporateName="bb",BUName="bb1",TotalAmount=20,approver1="b1",approver3="b3",approver4="b4",approver5="b5"},
        new CorpDetail(){ SAMID =3,CorporateID=3,CorporateName="cc",BUName="cc1",TotalAmount=30,approver1="c1",approver3="c3",approver4="c4",approver5="c5"},
    };
    return View(model);
}
[HttpPost]
public IActionResult Contact([FromBody]CorpDetail corpDetail)
{
    ViewData["Message"] = "Your contact page.";

    return View();
}

4。结果: enter image description here

答案 2 :(得分:0)

这是将数据传递到控制器的另一种简单方法。 在锚标记<a></a>内添加您按钮,然后使用href="@Url.Action("yourAction","yourController",new{<parameters>})"从视图中调用控制器。

更改HTML代码。假设您要使用Edit参数调用Home动作SAMID控制器。

@model IEnumerable

@foreach(var list in CorpDetails){
    <tr>
        <td><a href="@Url.Action("Edit", "Home", new {id = @list.SAMID})"><input type="button" id="btnSelect" value="Select" class="btn btn-info" /></a></td>
        <td>@list.SAMID</td>
        <td>@list.CorporateID</td>
        <td>@list.CorporateName</td>
        <td>@list.BUName</td>
        <td>@list.TotalAmount</td>
        <td>@list.approver1</td>
        <td>@list.approver3</td>
        <td>@list.approver4</td>
        <td>@list.approver5</td>
   </tr>
 }

您的控制器

 public ActionResult Edit(int id)
            {
                var SMID= id;
                //and more code
            }

如果要将整个对象传递给控制器​​,请传递整个对象并从action方法接收该对象。

<td><a href="@Url.Action("Edit", "Home", new {obj = @list})"><input type="button" id="btnSelect" value="Select" class="btn btn-info" /></a></td>

控制器

public ActionResult Edit(TestModel obj)
        {
            var testModel= obj;
            //and more code
        }