2014年4月29日 星期二

[MVC] View丟字串給Controller



How To Pass A String With A Form Value To Controller?

View丟字串給Controller

View的部分:

命名name屬性,等等直接對應到controller的參數名稱
示範html寫法和Razor寫法

        @using (Html.BeginForm())
{
   <ul>
       <li><input type="text" name="tbText1" /></li>
       <li>CM_PKey : @Html.TextBox("tbText2", "", new { @class = "cls" })</li>
   </ul>
            <p><input type="submit" name="name" value="Search"/></p>
        }


controller 接資料:


        [HttpPost]
        public ActionResult Details(string tbText1, string tbText2)
        {
            if(tbCMPKey.Length <= 0)
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

            int id = Convert.ToInt32(tbCMPKey);

            if (id == null)
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

            Opera o = context.Operas.Find(id);
            if (o == null)
                return HttpNotFound();

            return View(o);
        }


參考
http://www.dreamincode.net/forums/topic/286321-how-to-pass-a-string-with-a-form-value-to-controller/

延伸其他用法
FormCollection collection
http://microsoftmasterpiece.blogspot.tw/2013/01/mvc4-razor-how-to-get-value-from-view.html


2014年4月28日 星期一

[C#] class屬性值 - GetProperty().SetValue

由DataSet的ColumnName 自動對應Class屬性並塞值

            Type temType = oClass.GetType();
           
            Parallel.For(0, oClass.DataSet.Tables[0].Columns.Count - 1, (i, loopState) =>
            {
                try
                {
                    string oColumnName = oClass.BaseDataSet.Tables[0].Columns[i].ColumnName;
   string sValue = oClass.BaseDataSet.Tables[0].Rows[0][oColumnName];
                    temType.GetProperty(oColumnName).SetValue(oClass, sValue, null);
                }
                catch (Exception e)
                {
                    string sErrorMsg = e.ToString();
                }
            });
           



http://fecbob.pixnet.net/blog/post/41199263-%E5%8F%8D%E5%B0%84%E9%81%8D%E6%AD%B7list%3C%3E%E6%B3%9B%E5%9E%8B%E5%9E%8B%E5%88%A5

http://www.dotblogs.com.tw/lastsecret/archive/2010/10/20/18475.aspx

http://msdn.microsoft.com/zh-tw/library/axt1ctd9(v=vs.110).aspx

http://www.dotblogs.com.tw/ken74114/archive/2010/11/17/19510.aspx

http://stackoverflow.com/questions/6637679/reflection-get-attribute-name-and-value-on-property






2014年4月27日 星期日

[MVC] TempData、ViewData、ViewBag


Controller:

    ViewData["date1"] = DateTime.Now;
    ViewBag.date2 = DateTime.Now;


View:

    <div>
        @(((DateTime)ViewData["date2"]).ToShortDateString())
        <hr />
        @ViewBag.date1.ToShortDateString()
    </div>




from: http://www.dotblogs.com.tw/inblackbox/archive/2013/06/03/105240.aspx

1.ViewData
存放在物件中,生命週期為一個頁面。
Controller :
1public ActionResult Index()
2       {
3           ViewData["message"] = "訊息";
4           return View();
5       }
View :
1@ViewData["message"]
2.ViewBag
這是MVC 3 之後新增的,使用方式和ViewData一樣,差別在於ViewBag 使用 dynamic 型別,可免去手動轉型的麻煩,使用上較為方便,但也因為動態型別關係,速度上會略比ViewData來的慢(人體無感吧@@)。
Controller :

1public ActionResult Index()
2       {
3           ViewBag.message = "訊息";
4           return View();
5       }
View :
1@ViewBag.message
3.Temp Data
資料會儲存在Session 中,其生命週期為一個 Request,一旦Request結束就會被刪除。 因此我們可善用此特性讓資料跨不同Action傳遞至View,如RedirectToAction 中作使用,範例如下:




Controller :

01public ActionResult Index()
02{
03    TempData["status"] = "我是從index送過來的!";
04    return RedirectToAction("about");
05}
06 
07public ActionResult about()
08{
09    return View();
10}


http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html


 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template