Forum
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.
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