Как передать выбранную строку в контроллер? - PullRequest
0 голосов
/ 24 октября 2019
 @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, но я не знаю, как.

Ответы [ 3 ]

0 голосов
/ 24 октября 2019

Вот еще один простой способ передачи данных в контроллер. Добавьте кнопку you внутри тега привязки <a></a> и с помощью href="@Url.Action("yourAction","yourController",new{<parameters>})" вызовите контроллер из поля зрения.

Изменение в HTML-коде. Представьте, что вы хотите вызвать контроллер Edit action 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
            }

Если вы хотите передать весь объект в действие контроллера, пропустите весь объект и получите этот объект отметод действия.

<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
        }
0 голосов
/ 25 октября 2019

Вот рабочая демонстрация, как показано ниже:

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.Контроллер:

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

0 голосов
/ 24 октября 2019

Итак, в качестве базового примера того, чего вы хотите достичь, вы можете добавить поле флажка и, предположив, что 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:

//Receive your SAMID here for selected checkboxes
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ProcessInformation(CorpDetails details, string[] childChkbox)
{
  //Here you get selected ID's list as required
  List<int> mySAMIDList=childChkbox.Select(int.Parse).ToList();   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...