Pytanie w sprawie c#, http-post, html, html-post, asp.net-mvc-3 – Jak uzyskać dane z formularza za pomocą metody = „post”? Jak zażądać danych w moim kontrolerze?

0

Próbuję uzyskać dane z mojego kodu HTML, takie jak „acquringCode”, „cardAcceptor” i „merchantId”. Nie wiem, jak uzyskać te dane w moim kontrolerze. Znam jego request.form. Wierzę, że robię to źle. Czy istnieje łatwiejszy sposób przekazania obiektu lub każdej nazwy jako parametru przez funkcję?

HTML

<script type="text/javascript">
$(document).ready(function () {
    $("#SavetreventLocationLookupAddButton").click(function () {
        $("#addSaveTreventLocationLookup").submit();
    });
});

Dodaj wyszukiwanie lokalizacji Trevent
<form id="addSaveTreventLocationLookup" method="post" action="<%: Url.Action("AddSaveTreventLocationLookup","Prod") %>">
    <table>
        <tr>
            <td colspan="3" class="tableHeader">Trevent Location Lookup Detail</td>
        </tr>
         <tr>
            <td colspan="2" class="label">Acquiring Institution Identification Code:</td>
            <td class="content">
                <input type="text" maxlength="200" name="AcquiringInstitutionIdentificationCode" id="AcquiringInstitutionIdentificationCode" />
            </td>
        </tr>
         <tr>
            <td colspan="2" class="label">Card Acceptor Identification Code:</td>
            <td class="content">
                <input type="text" maxlength="200" name="CardAcceptorIdentificationCode" id="CardAcceptorIdentificationCode" />
            </td>
        </tr>
         <tr>
            <td colspan="2" class="label">Merchant Id:</td>
            <td class="content">
                <input type="text" maxlength="200" name="MerchantId" id="MerchantId" />
            </td>
        </tr>
        <tr>
            <td colspan="3" class="tableFooter">
                    <br />
                    <a id ="SavetreventLocationLookupAddButton" href="#" class="regularButton">Add</a>
                    <a href="javascript:history.back()" class="regularButton">Cancel</a>
            </td>
        </tr>
    </table>
</form>

Contoller

[HttpPost]
    [AuthorizeAttribute(AdminRoles = "AddTreventLocationLookup")]
    public ActionResult AddSaveTreventLocationLookup()
    {
        try
        {

            string acquiringInstitutionIdentificationCode;  //= Request.Form["AcquiringInstitutionIdentificationCode"] ?? string.Empty;
            string cardAcceptorIdentificationCode;// =/Request["CardAcceptorIdentificationCode"] ?? string.Empty;
            string merchantId;// = Request["MerchantID"] ?? string.Empty;
            if (!string.IsNullOrEmpty(Request.Form["AcquiringInstitutionIdentificationCode"]))
            {
                acquiringInstitutionIdentificationCode = Request.Form["AcquiringInstitutionIdentificationCode"];
            }
            if (!string.IsNullOrEmpty(Request.Form["CardAcceptorIdentificationCode"]))
            {
                cardAcceptorIdentificationCode = Request.Form["CardAcceptorIdentificationCode"];
            }
            if (!string.IsNullOrEmpty(Request.Form["MerchantID"]))
            {
                merchantId = Request.Form["MerchantID"];
            }


            AdminProductionServices.TreventLocationLookup treventLocationLookup = Administrator.Models.AdminProduction.TreventLocationLookup.loadTreventLocationLookup(Guid.Empty, Guid.Empty, string.Empty, string.Empty, string.Empty)[0];

            treventLocationLookup.acquiringInstitutionIdentifcationCode = acquiringInstitutionIdentificationCode;
            treventLocationLookup.cardAcceptorIdentificationCode = cardAcceptorIdentificationCode;
            treventLocationLookup.merchantId = merchantId;
            Administrator.Models.AdminProduction.TreventLocationLookup.addTreventLocationLookup(treventLocationLookup);
        }
        catch(Exception e)
        {
            Commons.ErrorHandling.ReportError("Administrator.Controller.ProdController AddSaveTreventLocationLookup()", e);
        }
        return RedirectToAction("SearchTreventLocationLookup", "Prod");
    }
Tak, powinieneś przeczytać podstawy ASP.NET MVC. Widziećmsdn.microsoft.com/en-us/library/dd410269.aspx John Saunders
P.S. Ogólnie rzecz biorąc, złym pomysłem jest rejestrowanie i ignorowanie wyjątków. Zakłada to, że aplikacja nie została uszkodzona przez przyczynę wyjątku i że można bezpiecznie kontynuować, jakby nic się nie stało. John Saunders

Twoja odpowiedź

4   odpowiedź
0

// Zauważ też, że mam silnik maszynki do golenia, że ​​zauważysz, że moje widoki używają // @ html.TextBoxFor ... Jednak jeśli nie masz silnika maszynki do golenia ... wtedy użyjesz // Coś jak <% Html.TextBoxFor . //

// Logika kontrolera

    [HttpPost]
    public ActionResult AddSaveTreventLocationLookup(TreventModel model)
    {

            string acquiringInstitutionIdentificationCode;  
            string cardAcceptorIdentificationCode;
            string merchantId;

            acquiringInstitutionIdentificationCode =   model.AcquiringInstitutionIdentificationCode;
            cardAcceptorIdentificationCode = model.CardAcceptorIdentificationCode;
            merchantId = model.MerchantId;

            //

        return RedirectToAction("TreventLookUp");
    }

    public ActionResult TreventLookUp()
    {
        return View("TreventLookUp");
    }
}

// Wyświetl logikę

    @model MvcApplication2.Models.TreventModel

<form id="addSaveTreventLocationLookup" method="post"action="@Url.Action("AddSaveTreventLocationLookup", "Test")">
<table>
    <tr>
        <td colspan="3" class="tableHeader">Trevent Location Lookup Detail</td>
    </tr>
    <tr>
        <td colspan="2" class="label">Acquiring Institution Identification Code:</td>
        <td class="content">
            @*<input type="text" maxlength="200"   name="AcquiringInstitutionIdentificationCode" id="AcquiringInstitutionIdentificationCode" />*@
            @Html.TextBoxFor(m=>m.AcquiringInstitutionIdentificationCode , new {maxlength="200"})
        </td>
    </tr>
    <tr>
        <td colspan="2" class="label">Card Acceptor Identification Code:</td>
        <td class="content">
            @*<input type="text" maxlength="200" name="CardAcceptorIdentificationCode" id="CardAcceptorIdentificationCode" />*@
            @Html.TextBoxFor(m => m.CardAcceptorIdentificationCode, new { maxlength = "200" })
        </td>
    </tr>
    <tr>
        <td colspan="2" class="label">Merchant Id:</td>
        <td class="content">
            @* <input type="text" maxlength="200" name="MerchantId" id="MerchantId" />*@
            @Html.TextBoxFor(m => m.MerchantId, new { maxlength = "200" })
        </td>
    </tr>
    <tr>
        <td colspan="3" class="tableFooter">
            <br />
            <a id ="SavetreventLocationLookupAddButton" href="#" class="regularButton">Add</a>
            <a href="javascript:history.back()" class="regularButton">Cancel</a>
        </td>
    </tr>
</table>
</form>
 <script type="text/javascript">
$(document).ready(function () {
    $("#SavetreventLocationLookupAddButton").click(function () {
        $("#addSaveTreventLocationLookup").submit();
    });
});
  </script>

//View Model
  public class TreventModel
  {
    public string AcquiringInstitutionIdentificationCode { get; set; }
    public string CardAcceptorIdentificationCode { get; set; }
    public string MerchantId { get; set; }
  }
1

Utwórz taki model widoku jak ten:

public class TreventLocationLookupViewModel
{
    public string InstitutionIdentificationCode {get; set;}
    public string CardAcceptorIdentificationCode {get; set;}
    public string MerchantId {get; set;}
}

a następnie użyj go w swojej akcji w ten sposób:

public ActionResult AddSaveTreventLocationLookup(TreventLocationLookupViewModel model)
{

        AdminProductionServices.TreventLocationLookup treventLocationLookup = Administrator.Models.AdminProduction.TreventLocationLookup.loadTreventLocationLookup(Guid.Empty, Guid.Empty, string.Empty, string.Empty, string.Empty)[0];

        treventLocationLookup.acquiringInstitutionIdentifcationCode = model.InstitutionIdentificationCode;
        treventLocationLookup.cardAcceptorIdentificationCode = model.CardAcceptorIdentificationCode;
        treventLocationLookup.merchantId = model.MerchantId;

        Administrator.Models.AdminProduction.TreventLocationLookup.addTreventLocationLookup(treventLocationLookup);

    return RedirectToAction("SearchTreventLocationLookup", "Prod");
}

MVC zajmie się powiązaniem wartości żądań z modelem dla Ciebie. Powinieneś przeczytać i przeczytać o modelach segregatorów, aby uzyskać pomysł.

0

ookup

Lubię to:

public ActionResult AddSaveTreventLocationLookup(FormCollection formCollection)
{

// now you can get the values you want
     string acquiringInstitutionIdentificationCode = formCollection["AcquiringInstitutionIdentificationCode"];
.......
0

odpowiedź veblock jest całkowicie poprawna. Ale możesz również powiązać proste zmienne w swojej akcji.

public ActionResult AddSaveTreventLocationLookup(string InstitutionIdentificationCode, string CardAcceptorIdentificationCode, string MerchantId)
    {
     ..code..
    }

Tak długo jak twoje pola formularza będą nazywane tymi samymi, co zmienne, MVC połączy je dla ciebie po wyszukaniu możliwych źródeł w zmiennych request.form, request.querystring i routingu.

Powiązane pytania