Forum

Mvc Dropdown List
 
Bildirimler
Hepsini Temizle

Mvc Dropdown List

2 Yazılar
2 Üyeler
0 Likes
1,477 Görüntüleme
(@ArdaKeskiner)
Gönderiler: 15
Eminent Member
Konu başlatıcı
 

Merhaba iyi çalışmalar

asp.net mvc (entity framework - codefirst) ortamında bir web uygulaması yazıyorum.

Uygulamayı yazarken bir konuda tıkandım.

@Html.dropdown()

model = database üzerinden geliyor.

namespace codefirst001.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;
    using System.Web.Mvc;

    [Table("marka")]
    public partial class marka
    {
        [Key]
        public int marka_id { get; set; }

        [StringLength(50)]
        [Required(ErrorMessage =("*"))]
        public string marka_isim { get; set; }

        public DateTime? marka_kyttrh { get; set; }

        public DateTime? marka_gncltrh { get; set; }

        public short marka_sirano { get; set; }

        public byte? marka_durum { get; set; }
        
        
    }

controller üzerinde pagelist kullanıyorum.

 public class markalistController : Controller
    {
        // GET: markalist
        private stokv2 stokdb = new stokv2();
        public ActionResult Index(int? sayfa, int? satir)
        {
            var str12 = Request.Form["satir"];
            
            int _sayfa = sayfa ?? 1;
            int _satir = satir ?? 2;
            //ViewBag.sayfa3 = sayfa2;
            ViewBag._satir = _satir;
           
            var str2 = Request.QueryString["sayfa"];
            var str3 = Request.QueryString["satir"];
            //IPagedList mrklst = (from x in stokdb.marka orderby x.marka_sirano select x).ToList().ToPagedList(_sayfa,_satir);
            IEnumerable mrklst = (from x in stokdb.marka orderby x.marka_sirano select x).ToList().ToPagedList(_sayfa, _satir);
            
            satirlst();
            return View(mrklst);
            
        }

 

view bölümünde

 

@using PagedList
@using PagedList.Mvc

@model IEnumerable<marka>
    @*@model PagedList.IPagedList<marka>*@

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_LayoutPage.cshtml";
}

<table class="table">
    <tr>
        <th>
            
        </th>
        <th>
            
        </th>
        <th>
            
        </th>
        <th>
            
        </th>
        <th>
            
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.marka_isim)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.marka_kyttrh)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.marka_gncltrh)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.marka_sirano)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.marka_durum)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.marka_id }) |
            @Html.ActionLink("Details", "Details", new { id=item.marka_id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.marka_id })
        </td>
    </tr>
}

</table>

@using (Html.BeginForm("Index", "markalist"))
{
    @Html.DropDownList("satir", null, new {onchange="this.form.submit()",@class = "btn btn-mini dropdown-toggle" })
    @Html.Hidden("hdn_satir");
    @Html.PagedListPager((IPagedList)Model, sayfa => Url.Action("Index", new { sayfa, satir = ViewBag._satir }))
}

@*<script type="text/javascript">
    $("#satir").on("change",function str() {
        
        var x = document.getElementById("satir").value;
        var y= document.getElementById("hdn_satir").value = x;
        alert("yükleme---" + y);
        $("form").submit();
    });*@

</script>

 

Yukarıda bir iki deme yaptım fakat form postback olduğu zaman controller üzerinde bulunan satir değişkeni null geliyor.

Bunu Request.querystring ve routedata[satir] ve java ile alabiliyorum. Buraya kadar normal

Fakat bu form üzerine bir de bul değişkeni gelecek ve url üzerindeki parametereler fazlalaşıyor. ( http://localhost:36977/markalist?sayfa=2&satir=2)

Breakpoint ile baktığım zaman view dan once controller yüklendiğini gördüm.Bu sebeble Index actionresult da default değerlerini yazdım null olması durumunda bunları kullan gibi

Sonrasında

public ActionResult Index()

{}

 

[httppost]

public ActionResult Index(int? sayfa, int? satir)

{}

 

olarak tanımla yaptım fakat burada sayfa post olduğu için [httppost] ile tanımladığım Index actionresult yerine [httppost] olmayan Index çalıştığını gördüm.

 

Benim istediğim konu url üzerinden göstermek veya veri taşımak yerine satır bölümü viewdan controller üzerine bir değişkene veri aktarsın

arka tarafta bende o değişkeni yakalayıp işlem yaptıra bilmek istiyorum.

Mvc konusuna yeni geçtiğim için tam olarak nasıl yapıldığını anlayamadım.

 

 
Gönderildi : 08/02/2018 16:10

(@eravse)
Gönderiler: 1753
Üye
 

Merhaba, URL üzerinden taşımak çok doğru olmayabilir tabi tercih ama url üzerişnden taşımayacaksan 

 

form olarak değilde viewbag olarak taşıman daha dogru

 

@Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
controller da ıse

metodunda su sekılde alabılırsın

public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
        {
sonra tekrar set edip içeride kullanabilirsin

    ViewBag.CurrentFilter = searchString;
saygılar

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 09/02/2018 14:53

Paylaş: