MVC的一些有用代码
1.将patial view转成字符串
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action"); ViewData.Model = model; using (var sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw); return sw.GetStringBuilder().ToString();
}
}
然而并卵用,因为完全可以返回一个 partial view
publicActionResult
GetView()
{...
return
View("viewName",model);
}
2.页面跳转
return
RedirectToAction("Action","Controller2");
return
View("ViewName");
return Index(hm);
http://stackoverflow.com/questions/11955161/view-doesnt-refresh-after-redirecttoaction-is-done
Onsuccess(function(retURL){ windows.location(retURL);})
replace windows.location(retURL)
with
location.replace(retURL)
public ActionResult AddData(CandidateViewModel viewModel)
{
var newCandidateId = 0;
newCandidateId = this._serviceClient.AddCandidate(viewModel);
stirng ReturnURL = "/DisplayCandidate/"+newCandidateId;
return JSON(ReturnURL);
}
3.ModelState
ModelState["test"].Errors.Count()
View:
@Html.ValidationMessageFor(m=>m.Name)
@Html.ValidationSummary()
Model:
[Required(ErrorMessage = "Please choose the Asset Group Path.")]
[DisplayName("Name :")]
[Remote("CheckName", "Student", HttpMethod = "POST", AdditionalFields = "Id", ErrorMessage = "Student Name already exists.")]
public string Name { get; set; }
Controller:
if (ModelState.IsValid)
{}
else
{
ModelState.AddModelError("Name", "Error Message");
}
4.Client IP
Request.UserHostName
Request.UserHostAddress
HttpContext.Current.User.Identity.Name
//Get IP address
string ipStr = string.Empty;
if ( String.IsNullOrEmpty(ipStr) || ipStr == "127.0.0.1" || ipStr == "::1")
{
IPAddress[] arrIPAddresses = Dns.GetHostAddresses(Dns.GetHostName());
//Request.ServerVariables["remote_addr"] Dns.GetHostName()
foreach (IPAddress ip in arrIPAddresses)
{
if (ip.AddressFamily.Equals(AddressFamily.InterNetwork)) ipStr=ip.ToString();
}
Session["Remote_Addr1"] = Request.ServerVariables["Remote_Addr"];
Session["Remote_Addr2"] = Request.UserHostAddress;
Session["Remote_Addr3"] = ipStr;}
5.string to byte[],char[]
byte[] data2 = Encoding.Unicode.GetBytes(name);
char[] values = name.ToCharArray();
6.params
public static void LogServiceError(Exception ex, string methodName, params object[] objs)
{
try
{
Dictionary<string, string> dics = LogFormatHelper.GetLogInfo(methodName);
LogServiceError(ex, dics,objs);
}
catch (Exception innerExp)
{
innerExp.Data.Add("Logger error", innerExp.Message);
AppLogger.LogError(innerExp);
}
}
7.SqlCommand 在transaction裏面
ExecuteNonQuery requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized.
using (SqlTransaction tx = destinationConnection.BeginTransaction(IsolationLevel.RepeatableRead))
{
try
{
SqlCommand sqlCmd = new SqlCommand("truncate table Info", destinationConnection);
sqlCmd.ExecuteNonQuery();
。。。
需要改成
SqlCommand sqlCmd = new SqlCommand("truncate table Info", destinationConnection,tx);
sqlCmd.ExecuteNonQuery();
http://stackoverflow.com/questions/13677812/error-when-using-transaction
8.SqlBulkCopy - Unexpected existing transaction
http://stackoverflow.com/questions/19117106/sqlbulkcopy-unexpected-existing-transaction
using (SqlTransaction tx = destinationConnection.BeginTransaction(IsolationLevel.RepeatableRead))
{
try
{
SqlCommand sqlCmd = new SqlCommand("truncate table Info", destinationConnection,tx);
sqlCmd.ExecuteNonQuery();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection))
{
bulkCopy.DestinationTableName = "Info";
bulkCopy.ColumnMappings.Add("COL1", "COL1");
...
需要改成
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection,SqlBulkCopyOptions.Default,tx))
{
bulkCopy.DestinationTableName = "Info";
using (SqlConnection destinationConnection = new SqlConnection("..."))
{
destinationConnection.Open();
using (SqlTransaction tx = destinationConnection.BeginTransaction(IsolationLevel.RepeatableRead))
{
try
{
SqlCommand sqlCmd = new SqlCommand("truncate table Info", destinationConnection,tx);
sqlCmd.ExecuteNonQuery();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection,SqlBulkCopyOptions.Default,tx))
{
bulkCopy.DestinationTableName = "Info";
bulkCopy.ColumnMappings.Add("COL1", "COL1");
...
bulkCopy.WriteToServer(dt);
}
tx.Commit();
}
catch (Exception ex)
{
tx.Rollback();
Console.WriteLine(ex.Message);
AppLogger.LogError(ex);
}
finally
{
tx.Dispose();
}
}
}
db.Connection.Open();
using
(db.Transaction = db.Connection.BeginTransaction())
{
try
{...
db.SubmitChanges();
db.Transaction.Commit();
}
catch
(Exception
ex)
{
db.Transaction.Rollback();
throw
ex;
}
finally
{
db.Connection.Close();
}
9.DbHelper
public static DataSet GetDataFromCommand(string cmdText, string connectionString)
{
using (OleDbConnection connDbConnection = new OleDbConnection())
{
connDbConnection.ConnectionString = connectionString;
connDbConnection.Open();
OleDbCommand objCommand = new OleDbCommand();
objCommand.CommandText = cmdText;
objCommand.Connection = connDbConnection;
DataSet ds = new DataSet();
OleDbDataAdapter objAdaptor = new OleDbDataAdapter();
objAdaptor.SelectCommand = objCommand;
objAdaptor.Fill(ds);
connDbConnection.Close();
connDbConnection.Dispose();
return ds;
}
}
10.StringHelper
public static string ToTitleCase(object obj)
{
if (obj == null)
return string.Empty; string result = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(Convert.ToString(obj).ToLower());
result = System.Text.RegularExpressions.Regex.Replace(result, @"\w+\&\w+", m => m.ToString().ToUpper());
return result;
}
11.链接
<ahref="javascript:(javascript:(void(0)))">Save</a>
12.AppDomain.CurrentDomain.BaseDirectory
string tempFolder = AppDomain.CurrentDomain.BaseDirectory + @"Temp\";
if (Directory.Exists(tempFolder)) Directory.Delete(tempFolder, true);
//string[] files = Directory.GetFiles(tempFolder, ".PDF");
//foreach (string file in files)
//{
// System.IO.File.Delete(file);
//}
13.ReflectionHelper
public static void CopyObject(object target, object source, params string[] excludedProperties) {
if (source == null || target == null)
{
throw new ArgumentNullException("source/target object");
}
PropertyInfo[] props = source.GetType().GetProperties();
foreach (PropertyInfo p in props) {
if (excludedProperties != null && excludedProperties.Contains(p.Name)) {
continue; //ignore the property if exists in the specified excluded properties
}
if (p.CanRead && p.PropertyType.Namespace == "System") {
PropertyInfo targetProperty = target.GetType().GetProperty(p.Name);
if (targetProperty != null && p.PropertyType == targetProperty.PropertyType && targetProperty.CanWrite
&& !AreEqual(p.GetValue(source, null), targetProperty.GetValue(target, null))){
targetProperty.SetValue(target, p.GetValue(source, null), null);
}
}
}
}
14.EncryptionHelper
public static string SHA1EncryptString(string sourceString) {
byte[] bytes = Encoding.UTF8.GetBytes(sourceString);
SHA1 sha = new SHA1CryptoServiceProvider();
string encryptedString = Convert.ToBase64String(sha.ComputeHash(bytes));
return encryptedString;
}
15.Validate
publicclassHomeModel:IValidatableObject
{
...
publicIEnumerable<ValidationResult>
Validate(ValidationContext
validationContext)
{
if
(...)
{
yieldreturnnewValidationResult(DisplayMsgs.Error);
}
}
}
16.引用传参数
public
void
Sort(
ref
int
x,
ref
int
y,
ref
int
z)
{
...
//里面代码不用变
}
Myclass m =
new
Myclass();
int
a,b,c;
a = 10;b=20;c=10;
m.Sort(
ref
a,
ref
b,
ref
c);
....
MVC的一些有用代码的更多相关文章
- Mvc分页组件MvcSimplePager代码重构
1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件M ...
- Mvc分页组件MvcSimplePager代码重构及使用
1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件M ...
- 整理c# 不常用但有用代码
# 整理c# 不常用但有用代码 1.winform窗体右键菜单打开其他窗体 private void contextMenuStripHandler_Click(object sender, Even ...
- Asp.net MVC 视图之公用代码
一.公共模板 转自:http://www.cnblogs.com/kissdodog/archive/2013/01/07/2848881.html 1.@RenderBody() 在网站公用部分通过 ...
- 基于AOP的MVC拦截异常让代码更优美
与asp.net 打交道很多年,如今天微软的优秀框架越来越多,其中微软在基于mvc的思想架构,也推出了自己的一套asp.net mvc 框架,如果你亲身体验过它,会情不自禁的说‘漂亮’.回过头来,‘漂 ...
- 用好spring mvc validator可以简化代码
表单的数据检验对一个程序来讲非常重要,因为对于客户端的数据不能完全信任,常规的检验类型有: 参数为空,根据不同的业务规定要求表单项是必填项 参数值的有效性,比如产品的价格,一定不能是负数 多个表单项组 ...
- ASP.NET MVC+EF5 开发常用代码
Asp.Net Mvc,EF 技术常用点总结 1.Asp.Net MVC a)获得当前控制器名和当前操作的名称(action) 1.Action 中 RouteData.Values[" ...
- MVC 数据验证收集代码
控制器 Home using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- ASP.NET MVC项目中EntityFramework"代码优先方法"的使用步骤
EF提供了三种方式来实现项目,分别是: (1)代码优先方法: (2)模型优先方法: (3)数据库优先方法: 本篇主要记录在Vs2010环境下使用代码优先的方式实现数据库和后端代码数据交互,语言为C#, ...
随机推荐
- WUSTOJ 1365: 矩阵旋转(Java)
题目链接:
- 关于InnoDB存储引擎 text blob 大字段的存储和优化
最近在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,单表的存储空间已经达到了近100G,这种情况再去改变和优化就非常难了 一.简介 为了清楚大字段对性能的影响,我们必须要知道i ...
- Golang mgo 模糊查询的使用
在日常使用的Mongodb中,有一项功能叫做模糊查询(使用正则匹配),例如: db.article.find({"title": {$regex: /a/, $options: & ...
- Scratch技巧—-使用克隆技术实现菜单按钮
昨天讲了克隆技术的一个具体应用:生成菜单按钮.有的小朋友迫不及待的试验了一下,发现菜单按钮是生成了,但是如何触发相应的按钮功能呢?触发功能的处理代码也是在克隆体里面实现哦.请看案例: 启动程序时,先隐 ...
- jenkins 打安卓包 cpu使用过高处理操作
登录两个控制台 打包开始后 在其中一台机器执行ps -ef |grep jenkins 找到执行打包的主进程复制pid 在另一个终端上执行 top -H -p pid 将最耗cpu的线程id转换为16 ...
- Hinton胶囊网络后最新研究:用“在线蒸馏”训练大规模分布式神经网络
Hinton胶囊网络后最新研究:用“在线蒸馏”训练大规模分布式神经网络 朱晓霞发表于目标检测和深度学习订阅 457 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等价格 立即抢购 ...
- CCF 2017-09-2 公共钥匙盒
CCF 2017-09-2 公共钥匙盒 题目 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室 ...
- JSQI网站大事表 | Website Landmark
2016-07-01 网站前身jsqi.50vip.com上线.2016-07-12 购买jsqi.org域名,替代之前的二级域名.2016-12-12 申请ChinaDMOZ收录,瞬间申请通过.20 ...
- Spring AOP编程经验总结
编程范式概览:面向过程,面向对象,函数式编程,事件驱动编程,面向切面等, AOP是什么? Spring AOP是采用面向切面编程的编程范式,而非编程语言,它只能解决特定问题,而非所有问题,它与OOP不 ...
- ndk-build 修改输出so位置 (change ndk-build output so lib file path )
期望的目录结构: Folder --- | --- build.bat | --- Source | --- All sources codes *.cpp *.h | --- Android --- ...