簡體   English   中英

使用httpGet將字符串從View發送到Controller-MVC

[英]Send string from View to Controller using httpGet - MVC

我是MVC的新手,所以請多多包涵。

我正在嘗試將string從文本框發送到控制器方法,以便可以在數據庫中找到對象。 但是,我不知道如何在HttpGet請求中將字符串從視圖成功發送到控制器(僅在HttpPost

我認為代碼

<div>
    <label>Email</label>
    @Html.TextBox("email")
</div>
<div class="btn btn-success">
    @Html.ActionLink("Edit RSVP", "Edit")
</div>

我控制器中的ViewResult方法

// Problem is the email parameter is always null

[HttpGet]
public ViewResult Edit(string email)
{

    // If the email the typed is find, it will display their contents on to a RsvpForm view
    return View("RsvpForm", guestRepository.Find(email));
}

任何人都知道如何發送此字符串,我將不勝感激。

謝謝

最簡單的方法是創建一個表單,如下所示:

@using(Html.BeginForm("Edit", ControllerName, FormMethod.GET))
{
    @Html.Label("Email")
    @Html.TextBox("email")

    <input type="submit" value="Edit RSVP"/>
}

或者您可以在文本框值更改時使用Jquery更改鏈接(不建議這樣做):

$('input[name=email]').on('change' function()
{
    var value = $(this).val();
    var href = $('.btn').next('a').attr('href');
    href += '?email='+value;
    $('.btn').next('a').attr('href', href)
});

像這樣:

@using (Html.BeginForm("Edit", "ControllerName", FormMethod.Get))
{
    <div>
        <label>Email</label>
        @Html.TextBox("email")
    </div>
    <div class="btn btn-success">
         <input type="submit" value="Edit RSVP" />
    </div>
}

注意:我無法從您的描述中得知您是否在不重新加載頁面的情況下嘗試這樣做。 此選項會將頁面發布到控制器,因此您將重新加載頁面。

如果您希望在不發布頁面的情況下加載它,則可以查看Ajax.BeginForm 這是StackOverflow文章,在AJAX形式上有不錯的介紹

更新

對於您的示例,如果您想使用AJAX,則可以執行以下操作。 這都是未經測試的,但可能接近您的需求。

首先,您可以創建代表要顯示的用戶數據的局部視圖:RsvpForm.cshtml

@model GuestData 

<div class="hdr">Name</div>
<div class="value">@Model.Name</div>
<div class="hdr">Email</div>
<div class="value">@Model.Email</div>

然后,您要確保控制器基於通過GET發送的電子郵件返回部分視圖:GuestDataController.cs

[HttpGet]
public ActionResult Edit(string email)
{
    // If the email the typed is find, it will display their contents on to a RsvpForm view
    return PartialView("RsvpForm", guestRepository.Find(email));
}

然后,您創建AJAX表單以通過GET提交請求並加載部分視圖,而無需重新加載頁面:view.cshtml

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

@using (Ajax.BeginForm("Edit", "GuestData", null, new AjaxOptions { UpdateTargetId = "UserData", HttpMethod = "Get" }, null))
{
    <div>
        <label>Email</label>
        @Html.TextBox("email")
    </div>
    <div class="btn btn-success">
        <input type="submit" value="Edit RSVP" />
    </div>
}

<div id="UserData"></div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM