2016-10-27

给视图中的select赋值:

控制器:

    public ActionResult Add()
{
List<SelectListItem> ClassName = new List<SelectListItem>()
{
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(); }

视图:

     <div class="col-sm-10">
@Html.DropDownListFor(m => model.ClassName, ViewData["ClassName"] as SelectList, new { @class = "form-control", placeholder = "请输入分类名称" })
</div>

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<CollectModel>,相信这个问题有点经验的老开发人员不用调试就可以看出来。

这个地方改正的做法是将视图中的@model PagedList<NetCms.Model.CollectModel> 改为@model NetCms.Model.CollectModel

一般mvcpager在做单表的分页的时候,控制器中是这样的:

视图中是这样的:

在这里,仔细想一下,其实在控制器中return(list_model)中的list_model的数据类型是pagedlist<WebFocus>,和在视图中@model PagedList<NetCms.Model.WebFocus>引用的数据类型是一样的!!!

感觉C#中的面向对象的思想还没有深入骨髓中。

2017-01-18

ASP.Net中的ajax.beginform:

Html:

<section class="content">
@using (Ajax.BeginForm("insertstore", "StoreMS", new AjaxOptions { HttpMethod = "Post", OnBegin = "FormBeginAddstore", OnSuccess = "FormSuccessAddstore" }))
{ <p>
BranchID:<input type="text" id="branchid" name="branchid" />
</p>
<p>
仓库名称:<input type="text" id="name" name="name" />
</p>
<p>
仓库地址:<input type="text" id="address" name="address" />
</p>
<p>
省:<input type="text" id="province" name="province" />
</p>
<p>
市:<input type="text" id="city" name="city" />
</p>
<p>
镇(区):<input type="text" id="town" name="town" />
</p>
<p>
村:<input type="text" id="vilige" name="vilige" />
</p>
<p>
<input type="submit" value="保 存" />
</p>
}
</section>

JS:


function FormBeginAddstore() { } function FormSuccessAddstore() { }

所需脚本:


<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

2017-01-19

Linq多表查询的结果转换成List泛型,在视图中遍历。

    /// <summary>
/// 库存列表信息
/// </summary>
/// <returns></returns>
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<dynamic> oneList = new List<dynamic>();
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 <section class="content">
@foreach (var item in ViewBag.data)
{
<p>
@item.goodsid
</p>
<br />
<p>
@item.goodsbrand
</p>
<br />
<p>
@item.goodsname
</p>
<br />
}
</section>
上面的那个方式虽然可以解决问题,但是“数据类型”一直是匿名类型或者虚类型的。下面这个提供了将linq查询的结果在控制器中转换为list<model>的方式:

/// <summary>
/// 将linq查询到的结果转化为强类型的List泛型集合
/// </summary>
/// <returns></returns>
public ActionResult GetStrongTypingFromLinq()
{
List<StockListModel> data = (List<StockListModel>)(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<string, int>(strArray, delegate(string s) { return int.Parse(s); });

C# 、.NET、ASP.NET MVC积累的更多相关文章

  1. Asp.net MVC知识积累

    一.知识积累 http://yuangang.cnblogs.com/ 跟蓝狐学mvc教程专题目录:http://www.lanhusoft.com/Article/169.html 依赖注入:htt ...

  2. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  3. ASP.NET MVC 5 03 - 安装MVC5并创建第一个应用程序

    不知不觉 又逢年底, 穷的钞票 所剩无几. 朋友圈里 各种装逼, 抹抹眼泪 MVC 继续走起.. 本系列纯属学习笔记,如果哪里有错误或遗漏的地方,希望大家高调指出,当然,我肯定不会低调改正的.(开个小 ...

  4. Web 应用程序中的安全向量 – ASP.NET MVC 4 系列

           Web 程序运行在标准的.基于文本的协议(HTTP 和 HTML)之上,所以特别容易受到自动攻击的伤害.本章主要介绍黑客如何滥用应用程序,以及针对这些问题的应对措施.   威胁:跨站脚本 ...

  5. ASP.NET MVC ModelValidator小结

    当用户通过UI输入数据向程序交互时,都会出现一个潜在的错误,数据错误,要检查用户提交的数据是否正确,需要做数据验证,在ASP.NET MVC中,每当Action执行前都会对传入Action的Model ...

  6. ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上

    原文:ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上 ASP.NET MVC默认采用基于标准特性的Model验证机制,但是只有应用在Model ...

  7. Ninject 在 Winform、 Asp.net MVC中连络EntityFramework的应用

    Ninject 在 Winform. Asp.net MVC中连络EntityFramework的应用( 注入同一个DbContext的应用名人名言:科学是老老实实的东西,它要靠许许多多人民的劳动和智 ...

  8. 关于《ASP.NET MVC企业级实战》

    大家好,我的书<ASP.NET MVC企业级实战>已经出版啦,感谢大家过去的关注与支持!前言部分,出版的时候漏了部分内容,我这里将其贴出来. 本书提供源码和教学PPT课件!(源码在书中第3 ...

  9. 04 入门 - ASP.NET MVC应用程序的结构

    目录索引:<ASP.NET MVC 5 高级编程>学习笔记 用Visual Studio创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录. 如图所示: ...

随机推荐

  1. vmware workstation pro 安装ubantu虚拟机

    参考:https://ywnz.com/linuxaz/3904.html https://www.zhihu.com/search?type=content&q=vmware%20works ...

  2. KbmMW-及相关

    KbmMW框架是收费的,不在此提供下载,如需购买,请自行联系作者Kim Madsen. 网址资源: 官网主页:http://www.components4programmers.com/product ...

  3. GW知识点

    1.取值: protected void Button1_Click(object sender, EventArgs e) { string str = ""; foreach ...

  4. C#中在内容页获取其模板页中的变量,或者值

    在CSDN的博文中看到了 muziduoxi 的文章:http://blog.csdn.net/muziduoxi/article/details/5386543 虽然里面提到的方法没有解决我的难题, ...

  5. python3与Redis连接操作

    Python3之redis使用   简介 redis是一个key-value存储系统,和Memcache类似,它支持存储的value类型相对更多,包括string(字符串),list(链表),set( ...

  6. PyCharm 常用快捷键和设置

    pycharm常用快捷键 1.编辑(Editing) Ctrl + Space    基本的代码完成(类.方法.属性)Ctrl + Alt + Space  快速导入任意类Ctrl + Shift + ...

  7. IBM V3500存储恢复步骤实例(linux)

    本环境是一有台IBM3500存储,将存储挂载至linux的/data目录,模拟测试当主服务器挂了,将数据恢复到另一台服务器,存储有两个地址,我配置的是192.168.80.59是用于web管理,192 ...

  8. ACM学习历程—Hihocoder 1288 Font Size(暴力 || 二分)

    http://hihocoder.com/problemset/problem/1288 这题是这次微软笔试的第一题,关键的是s的上限是min(w, h),这样s的范围只有到1000,这样就可以直接暴 ...

  9. 机器学习:Jupyter Notebook中Matplotlib的使用

    一.matplotlib绘制折线图 matplotlib绘图的实质是折线图,将所有的点用直线连接起来,由于距离比较密,看起来像是个平滑的曲线: import matplotlib as mpl:加载m ...

  10. AutoMapper学习笔记

    进入公司后学习到的东西,之前记录在github上 现在搬运过来 AutoMapperDemo 需要安装两个包 AutoMapper AutoMapper.Extensions.Microsoft.De ...