de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Toubi
Toubi
Question

MVC razor bentuk dengan berbagai tombol submit?

Razor view memiliki 3 tombol dalam bentuk. Semua tombol's tindakan akan membutuhkan bentuk nilai-nilai yang pada dasarnya adalah nilai-nilai yang datang field input.

Setiap kali saya klik tombol itu saya diarahkan ke default action. Bisakah anda memandu bagaimana saya dapat mengirimkan formulir untuk tindakan yang berbeda berdasarkan pada tombol tekan ?

Saya benar-benar menghargai waktu, bimbingan dan bantuan.

58 2013-10-29T05:27:59+00:00 12
 tereško
tereško
Pertanyaan edit 8 November 2013 в 12:54
Pemrograman
asp.net-mvc
c#
asp.net-mvc-4
razor
Solution / Answer
Jeroen Doppenberg
Jeroen Doppenberg
29 Oktober 2013 в 8:12
2013-10-29T08:12:59+00:00
Lebih
Sumber
Sunting
#22650109

Anda juga bisa mencoba ini:

<input type="submit" name="submitbutton1" value="submit1" />
<input type="submit" name="submitbutton2" value="submit2" />

Kemudian dalam fungsi default anda memanggil fungsi-fungsi yang anda inginkan:

if( Request.Form["submitbutton1"] != null)
{
    // Code for function 1
}
else if(Request.Form["submitButton2"] != null )
{
    // code for function 2
}
 KyleMit
KyleMit
Jawaban edit 13 Juli 2016 в 3:18
87
0
 learner
learner
17 April 2015 в 10:49
2015-04-17T10:49:50+00:00
Lebih
Sumber
Sunting
#22650114

Ini solusi elegan bekerja untuk jumlah tombol submit:

@Html.Begin()
{
  // Html code here
  <input type="submit" name="command" value="submit1" />
  <input type="submit" name="command" value="submit2" />

}

Dan di pengontrol' tindakan metode menerimanya sebagai parameter.

public ActionResult Create(Employee model, string command)
{
    if(command.Equals("submit1"))
    {
      // Call action here...
    }
    else
    {
      // Call another action here...
    }
}
Jeremy Thompson
Jeremy Thompson
Jawaban edit 2 Februari 2016 в 2:24
73
0
Lamloumi Afif
Lamloumi Afif
29 Oktober 2013 в 8:27
2013-10-29T08:27:29+00:00
Lebih
Sumber
Sunting
#22650110

dalam pandangan

<form action="/Controller_name/action" method="Post>

 <input type="submit" name="btn1" value="Ok" />
 <input type="submit" name="btn1" value="cancel" />
 <input type="submit" name="btn1" value="Save" />
</form>

dalam aksi

string str =Request.Params["btn1"];
if(str=="ok"){

}
if(str=="cancel"){

}
if(str=="save"){

}
16
0
 Arthur
Arthur
29 Oktober 2013 в 6:16
2013-10-29T06:16:08+00:00
Lebih
Sumber
Sunting
#22650108

Anda dapat menggunakan JS + Ajax. Misalnya, jika anda memiliki setiap tombol anda dapat mengatakan apa yang harus dilakukan pada acara klik. Berikut kode:

 <input id="btnFilterData" type="button" value="myBtn">

Di sini anda tombol di html: dalam naskah bagian, anda perlu menggunakan kode ini (bagian Ini harus di akhir dokumen):

<script type="text/javascript">
$('#btnFilterData').click(function () {
    myFunc();
});
</script>

Dan akhirnya, anda perlu menambahkan fungsi ajax (Di script lain bagian, yang harus ditempatkan pada awal dokumen):

function myFunc() {
    $.ajax({
        type: "GET",
        contentType: "application/json",
        url: "/myController/myFuncOnController",
        data: {
             //params, which you can pass to yu func
        },
        success: function(result) {

        error: function (errorData) {

        }
    });
};
 tristanm
tristanm
Jawaban edit 28 Juni 2016 в 1:42
10
0
Paul Zahra
Paul Zahra
17 April 2015 в 10:35
2015-04-17T10:35:33+00:00
Lebih
Sumber
Sunting
#22650113

Terbersih solusi I've ditemukan adalah sebagai berikut:

Contoh ini adalah untuk melakukan dua tindakan yang berbeda; premis dasar adalah dengan menggunakan nilai untuk melewatkan data ke dalam tindakan.

Dalam pandangan anda:

@using (Html.BeginForm("DliAction", "Dli", FormMethod.Post, new { id = "mainForm" }))
{
    if (isOnDli)
    {
        <button name="removeDli" value="@result.WeNo">Remove From DLI</button>
    }
    else
    {
        <button name="performDli" value="@result.WeNo">Perform DLI</button>
    }
}

Kemudian dalam tindakan anda:

    public ActionResult DliAction(string removeDli, string performDli)
    {
        if (string.IsNullOrEmpty(performDli))
        {
            ...
        }
        else if (string.IsNullOrEmpty(removeDli))
        {
            ...
        }

        return View();
    }

Kode ini harus mudah untuk mengubah dalam rangka untuk mencapai variasi selain tema, misalnya mengubah tombol's nama yang sama, maka anda hanya membutuhkan satu parameter pada action dll, seperti dapat dilihat di bawah ini:

Dalam pandangan anda:

@using (Html.BeginForm("DliAction", "Dli", FormMethod.Post, new { id = "mainForm" }))
{

        <button name="weNo" value="@result.WeNo">Process This WeNo</button>

        <button name="weNo" value="@result.WeNo">Process A Different WeNo This Item</button>
}

Kemudian dalam tindakan anda:

    public ActionResult DliAction(string weNo)
    {
        // Process the weNo...

        return View();
    }
4
0
 TK-421
TK-421
29 Oktober 2013 в 3:24
2013-10-29T15:24:25+00:00
Lebih
Sumber
Sunting
#22650111

Cobalah membungkus masing-masing tombol di it's sendiri formulir dalam tampilan anda.

  @using (Html.BeginForm("Action1", "Controller"))
  {
    <input type="submit" value="Button 1" />
  }

  @using (Html.BeginForm("Action2", "Controller"))
  {
    <input type="submit" value="Button 2" />
  }
3
0
 galmeida
galmeida
22 Juni 2015 в 5:22
2015-06-22T17:22:07+00:00
Lebih
Sumber
Sunting
#22650115

Anda bisa menggunakan tombol normal(non kirim). Menggunakan javascript untuk menulis ulang (di 'onclick' event) bentuk's 'action' atribut untuk sesuatu yang anda inginkan dan kemudian mengirimkannya. Membuat tombol menggunakan custom helper(membuat file "Penolong.cshtml" di dalam folder App_Code, akar dari proyek anda) .

@helper SubmitButton(string text, string controller,string action)
{   
    var uh = new System.Web.Mvc.UrlHelper(Context.Request.RequestContext);
    string url = @uh.Action(action, controller, null);   
    <input type=button  onclick="(
                                       function(e)
                                                 {
                                                   $(e).parent().attr('action', '@url'); //rewrite action url
                                                   //create a submit button to be clicked and removed, so that onsubmit is triggered
                                                   var form = document.getElementById($(e).parent().attr('id'));
                                                   var button = form.ownerDocument.createElement('input');
                                                   button.style.display = 'none';
                                                   button.type = 'submit';
                                                   form.appendChild(button).click(); 
                                                   form.removeChild(button);              
                                                  }
                                      )(this)" value="@text"/>
}

Dan kemudian menggunakannya sebagai:

@Helpers.SubmitButton("Text for 1st button","ControllerForButton1","ActionForButton1")
@Helpers.SubmitButton("Text for 2nd button","ControllerForButton2","ActionForButton2")
...

Dalam formulir anda.

 galmeida
galmeida
Jawaban edit 28 Juli 2015 в 3:17
3
0
Ali Adravi
Ali Adravi
13 Oktober 2017 в 3:49
2017-10-13T15:49:08+00:00
Lebih
Sumber
Sunting
#22650118

Cara paling sederhana adalah dengan menggunakan html5 FormAction dan FormMethod

<input type="submit" 
           formaction="Save"
           formmethod="post" 
           value="Save" />
    <input type="submit"
           formaction="SaveForLatter"
           formmethod="post" 
           value="Save For Latter" />
    <input type="submit"
           formaction="SaveAndPublish"
           formmethod="post"
           value="Save And Publish" />

[HttpPost]
public ActionResult Save(CustomerViewModel model) {...}

[HttpPost]
public ActionResult SaveForLatter(CustomerViewModel model){...}

[HttpPost]
public ActionResult SaveAndPublish(CustomerViewModel model){...}

Ada banyak cara lain yang dapat kita gunakan, lihat artikel ini ASP.Net MVC beberapa tombol submit digunakan dalam cara yang berbeda

1
0
 user2695433
user2695433
16 Oktober 2017 в 8:21
2017-10-16T08:21:09+00:00
Lebih
Sumber
Sunting
#22650119

Ini adalah apa yang bekerja untuk saya.

formaction="@Url.Action("Edit")"

Cuplikan :

 <input type="submit" formaction="@Url.Action("Edit")" formmethod="post" value="Save" class="btn btn-primary" />

<input type="submit" formaction="@Url.Action("PartialEdit")" formmethod="post" value="Select Type" class="btn btn-primary" />

 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit( Quote quote)
        {
           //code 
       }
 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult PartialEdit(Quote quote)
        {
           //code
        }

Mungkin bisa membantu beberapa orang yang ingin memiliki 2 tindakan yang berbeda metode, bukan satu metode yang menggunakan penyeleksi atau menggunakan client script .

1
0
 Jacques
Jacques
12 Juni 2017 в 1:33
2017-06-12T13:33:39+00:00
Lebih
Sumber
Sunting
#22650116

Dalam kasus anda're murni menggunakan razor, yaitu tidak ada MVC controller:

<button name="SubmitForm" value="Hello">Hello</button>
<button name="SubmitForm" value="World">World</button>
@if (IsPost)
{
    <p>@Request.Form["SubmitForm"]</p>
}

Mengklik masing-masing tombol harus membuat keluar Hello dan Dunia.

0
0
Pir  Fahim Shah
Pir Fahim Shah
14 Februari 2014 в 4:28
2014-02-14T16:28:15+00:00
Lebih
Sumber
Sunting
#22650112

Jawaban ini akan menunjukkan kepada anda bagaimana untuk bekerja di asp.net dengan pisau cukur, dan untuk mengontrol beberapa tombol submit acara. Memungkinkan misalnya kita memiliki dua tombol, satu tombol akan mengarahkan kita untuk "PageA.cshtml" dan lain-lain akan mengarahkan kita untuk "PageB.cshtml".

@{
  if (IsPost)
    {
       if(Request["btn"].Equals("button_A"))
        {
          Response.Redirect("PageA.cshtml");
        }
      if(Request["btn"].Equals("button_B"))
        {
          Response.Redirect("PageB.cshtml");
        }
  }
}
<form method="post">
   <input type="submit" value="button_A" name="btn"/>;
   <input type="submit" value="button_B" name="btn"/>;          
</form>
0
0
 Pablo
Pablo
27 September 2017 в 12:42
2017-09-27T12:42:42+00:00
Lebih
Sumber
Sunting
#22650117

Didn't melihat jawaban menggunakan tag pembantu (Core MVC), jadi di sini ia pergi (untuk menghapus tindakan):

Pada HTML:

<form action="" method="post" role="form">
<table>
@for (var i = 0; i < Model.List.Count(); i++)
{
    <tr>
        <td>@Model.List[i].ItemDescription</td>
        <td>
            <input type="submit" value="REMOVE" class="btn btn-xs btn-danger" 
             asp-controller="ControllerName" asp-action="delete" asp-route-idForDeleteItem="@Model.List[i].idForDeleteItem" />
        </td>
    </tr>
}
</table>
</form>

Di Controller:

[HttpPost("[action]/{idForDeleteItem}"), ActionName("Delete")]
public async Task<IActionResult> DeleteConfirmed(long idForDeleteItem)
{
    ///delete with param id goes here
}

Don't lupa untuk menggunakan [Rute("[controller]")] SEBELUM deklarasi kelas - pada controller.

0
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 6 jam yang lalu
2
Akshit Mehta
Terdaftar 2 hari yang lalu
3
me you
Terdaftar 5 hari yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi