2016-10-27
给视图中的select赋值:
控制器:
public ActionResult Add()
{
List ClassName = new List()
{
new SelectListItem(){Text="广告拍摄", Value="广告拍摄"},
new SelectListItem(){Text="影视拍摄", Value="影视拍摄"},
new SelectListItem(){Text="平面拍摄", Value="平面拍摄"},
new SelectListItem(){Text="综艺节目", Value="综艺节目"},
};
ViewData["ClassName"] = new SelectList(ClassName, "Value", "Text");
return View();
}
视图:
@Html.DropDownListFor(m => model.ClassName, ViewData["ClassName"] as SelectList, new { @class = "form-control", placeholder = "请输入分类名称" })
2016-11-23
用mvcpager过程中的一个错误,相信也是很多初用mvcpager开发者会掉下去的坑:
错误提示:
The model item passed into the dictionary is of type 'NetCms.Model.CollectModel', but this dictionary requires a model item of type 'Webdiyer.WebControls.Mvc.PagedList`1[NetCms.Model.CollectModel]'.
直白点的说就是控制器传递给视图的实体类的数据类型不是视图中所规定的类型。
详细解释:
我的model层的代码:
我的controller中的代码:
我的view中的代码:
乍一看似乎没有问题,和普通的mvcpager唯一不同的就是PagedList的数据类型是将多个实体类作为了一个大实体类的属性。但是真正调试一下你就会发现在控制器中return view(model)中的model 的数据类型是CollectModel,而视图中所规定的数据类型是pagedlist,相信这个问题有点经验的老开发人员不用调试就可以看出来。
这个地方改正的做法是将视图中的@model PagedList 改为@model NetCms.Model.CollectModel
一般mvcpager在做单表的分页的时候,控制器中是这样的:
视图中是这样的:
在这里,仔细想一下,其实在控制器中return(list_model)中的list_model的数据类型是pagedlist,和在视图中@model PagedList引用的数据类型是一样的!!!
感觉C#中的面向对象的思想还没有深入骨髓中。
2017-01-18
ASP.Net中的ajax.beginform:
Html:
@using (Ajax.BeginForm("insertstore", "StoreMS", new AjaxOptions { HttpMethod = "Post", OnBegin = "FormBeginAddstore", OnSuccess = "FormSuccessAddstore" }))
{
BranchID:
仓库名称:
仓库地址:
省:
市:
镇(区):
村:
}
JS:
function FormBeginAddstore() {
}
function FormSuccessAddstore() {
}
所需脚本:
2017-01-19
Linq多表查询的结果转换成List泛型,在视图中遍历。
///
/// 库存列表信息
///
///
public ActionResult GetStockListData()
{
var data = (from gitem in lde.Goods
join bitem in lde.Brand on gitem.BrandId equals bitem.Id
join titem in lde.GoodsType on gitem.TypeId equals titem.ID
join gsitem in lde.GoodsStore on gitem.ID equals gsitem.GoodsId
join sitem in lde.Store on gsitem.StoreId equals sitem.ID
select new
{
goodsid = gitem.ID,
goodsbrand = bitem.Name,
goodstype = titem.TypeName,
goodsname = gitem.DisplayName,
goodsunit = gitem.Unit,
goodspackage = gitem.Package,
goodsprice = gitem.Price,
goodsimg = gitem.HomeImage,
goodsstore = sitem.Name,
storebranchid = sitem.BranchId,
goodsstock = gsitem.Num
}
).Take(100).ToList();
List oneList = new List();
foreach (var item in data)
{
dynamic dyObject = new ExpandoObject();
dyObject.goodsid = item.goodsid;
dyObject.goodsbrand = item.goodsbrand;
dyObject.goodstype = item.goodstype;
dyObject.goodsname = item.goodsname;
dyObject.goodsunit = item.goodsunit;
dyObject.goodspackage = item.goodspackage;
dyObject.goodsprice = item.goodsprice;
dyObject.goodsimg = item.goodsimg;
dyObject.goodsstore = item.goodsstore;
dyObject.storebranchid = item.storebranchid;
dyObject.goodsstock = item.goodsstock;
oneList.Add(dyObject);
}
ViewBag.data = oneList;
return View();
}
视图部分的代码:
html
@foreach (var item in ViewBag.data)
{
@item.goodsid
@item.goodsbrand
@item.goodsname
}
上面的那个方式虽然可以解决问题,但是“数据类型”一直是匿名类型或者虚类型的。下面这个提供了将linq查询的结果在控制器中转换为list的方式:
///
/// 将linq查询到的结果转化为强类型的List泛型集合
///
///
public ActionResult GetStrongTypingFromLinq()
{
List data = (List)(from gitem in lde.Goods
join bitem in lde.Brand on gitem.BrandId equals bitem.Id
join titem in lde.GoodsType on gitem.TypeId equals titem.ID
join gsitem in lde.GoodsStore on gitem.ID equals gsitem.GoodsId
join sitem in lde.Store on gsitem.StoreId equals sitem.ID
select new StockListModel()
{
GoodsId = gitem.ID,
GoodsBrand = bitem.Name,
GoodsType = titem.TypeName,
GoodsName = gitem.DisplayName,
GoodsUnit = gitem.Unit,
GoodsPackage = gitem.Package,
GoodsPrice = gitem.Price,
GoodsImg = gitem.HomeImage,
GoodsStore = sitem.Name,
StoreBranchId = sitem.BranchId,
GoodsStock = gsitem.Num
}
).Take(100).OrderByDescending(c => c.GoodsId).ToList();
foreach (var item in data)
{
var theitem = item;
}
return View(data);
}
2017-02-14
在使用EntityFramework(EF)的时候遇到的一个问题:从数据库生成C#的实体模型,但是后来数据库结构和表结构改动了,所以删除了之前的实体模型,然后重新添加了一个实体模型(这里我知道可以用T4模板来完成这个事情,包括EF中的实现也是用的T4的原理,
但是T4模板一直没去研究,不知道怎么玩=_=*)。但是在编译后报错“错误 102 参数 2: 无法从“System.Data.Objects.ObjectParameter”转换为“System.Data.Entity.Core.Objects.ObjectParameter”
解决办法是将“LeadingDebuggerModel.Context.cs”文件中“using System.Data.Objects;”改成“ using System.Data.Entity.Core.Objects;”
原理:EF5和EF5之前的版本引用的是using System.Data.Objects,EF6开始引用的是using System.Data.Entity.Core.Objects;。报这个错误,一般是EF5和EF6共存才会有的错误。
2017-05-03
C#中的var 和 object 和 dynamic:
var:隐式类型、虚类型 object:弱类型 dynamic:动态类型
var变量和object类型变量完全不同,使用object类型声明的变量是弱类型,可以被赋予任何类型的值,而使用var关键字声明的变量与普通变量一样,仍然是强类型变量。var变量被初始化是,其类型即被确定。
var变量与dynamic变量完全不同。var变量是一种静态类型的变量,而dynamic是一种动态类型的变量。静态类型可以执行类型检查、给出智能提示,而动态类型则不可以。
2018-05-31
C#中的string数组转int数组
int[] idsArray = Array.ConvertAll(strArray, delegate(string s) { return int.Parse(s); });