我是asp.net mvc 4和EF的新手.我正在创建用户模型,用于创建/更新用户信息.模型代码如下:
....
public int UserID { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
[Compare("Password")]
public string VerifyPassword { get; set; }
.....
SOME OTHER FIELDS COMES HERE
......
Run Code Online (Sandbox Code Playgroud)
这个模型用于创建/更新活动.这适用于创建用户但在更新时我不希望用户更新他的Id,用户名因此我保持readonly也不想显示用户密码/验证密码字段所以我从视图中删除它.现在,在更新(编辑模式)时,我总是收到密码字段的验证错误消息.所以我的问题是如何避免更新这些字段并更新其他字段.为了解决这个问题,我尝试创建viewmodel,但它对我没有帮助.还在控制器中添加了绕过验证的代码:
public ActionResult Edit(User user)
{
ModelState.Remove("Password");
ModelState.Remove("VerifyPassword");
ModelState.Clear();
if (ModelState.IsValid)
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我ModelState.IsValid = true但无法更新.请给我解决这个问题的方法.
提前致谢..
我从dev.twitter无耻地获取以下代码来获取特定用户的时间线:
string endpoint = "https://api.twitter.com/1.1/statuses/user_timeline.json";
string user_name = ".....";
string ConsumerKey = "....";
string ConsumerSecret = "........";
string Token = ".......";
string TokenSecret = "........";
// oauth application keys
var oauth_token = Token;
var oauth_token_secret = TokenSecret;
var oauth_consumer_key = ConsumerKey;
var oauth_consumer_secret = ConsumerSecret;
// oauth implementation details
var oauth_version = "1.0";
var oauth_signature_method = "HMAC-SHA1";
// unique request details
var oauth_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
var timeSpan = DateTime.UtcNow
- new DateTime(1970, 1, 1, 0, 0, 0, …Run Code Online (Sandbox Code Playgroud) 我有以下EF生成的数据模型:
public partial class PrinterMapping
{
public string MTPrinterID { get; set; }
public string NTPrinterID { get; set; }
public string Active { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我有以下视图模型:
public class PrinterViewModel
{
public PrinterMapping PrinterMapping;
public Exceptions Exceptions;
public IEnumerable<PrinterMapping> Printers;
}
Run Code Online (Sandbox Code Playgroud)
在HomeController中的Index Action中,我将视图模型传递给Index视图.
private eFormsEntities db = new eFormsEntities();
public ActionResult Index()
{
PrinterViewModel printerModel = new PrinterViewModel();
printerModel.Printers = from pt in db.PrinterMapping select pt;
return View(printerModel);
}
Run Code Online (Sandbox Code Playgroud)
我的索引视图以下面的方式调用部分视图(可能是错误的):
@Html.Partial("~/Views/Home/GridView.cshtml")
Run Code Online (Sandbox Code Playgroud)
我的GridView.cshtml看起来像:
@model AccessPrinterMapping.Models.PrinterViewModel
<h2> This is Where …Run Code Online (Sandbox Code Playgroud) 今天我注意到两个命名空间System.Web.Mvc,并System.Web.WebPages.Html有SelectListItem.它之间有什么区别,有时候你应该使用一个而不是另一个吗?
我正在研究我将数据从asp.net webform发布到WCF服务的项目.我通过params发布数据,服务回复了我JSON string.现在我在反序列化方面遇到了问题.我读了很多线程,但没有找到任何解决方案.希望有人能解决我的问题.提前致谢
来自WCF的回复
{ "LoginResult":假}
我只想要"false"价值.
我怎么试过:
string URL = "http://localhost:32319/ServiceEmployeeLogin.svc";
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(URL+"/"+emp_username+"/"+emp_password+"/"+emp_type);
wrGETURL.Method = "POST";
wrGETURL.ContentType = @"application/json; charset=utf-8";
HttpWebResponse webresponse = wrGETURL.GetResponse() as HttpWebResponse;
Encoding enc = System.Text.Encoding.GetEncoding("utf-8");
// read response stream from response object
StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(), enc);
// read string from stream data
strResult = loResponseStream.ReadToEnd();
var jObj = JObject.Parse(strResult);
var dict = jObj["LoginResult"].Children().Cast<JProperty>();
Run Code Online (Sandbox Code Playgroud) 我正在尝试找到一种在构建项目时转换index.cshtml文件的方法.比如说:
<script src="app-dev.js"></script>
Run Code Online (Sandbox Code Playgroud)
在Build模式为Release:
<script src="app-prod.js></script>
Run Code Online (Sandbox Code Playgroud) 我有以下表格:
@Html.BeginForm("ActionMethod","Controller",FormMethod.Post)
Run Code Online (Sandbox Code Playgroud)
提交时我想运行Javascript函数,所以我添加了以下内容:
@Html.BeginForm("ActionMethod","Controller",FormMethod.Post, new { onsubmit = "myJsFunction()" })
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用......我做错了什么?谢谢!
我试图将字符串数组传递给Web Api方法,该方法接受一个字符串数组作为参数.Bellow my Web Api方法
[HttpGet]
public string HireRocco(string[] hitList)
{
string updateList = string.Empty;
return updateList;
}
Run Code Online (Sandbox Code Playgroud)
我的阿贾克斯
var uri = 'http://localhost:16629/api/AssassinApi/HireRocco',
hitList = ['me', 'yourself'];
$.ajax({
url: uri,
type: 'GET',
data: { hitList : hitList },
cache: false,
dataType: 'json',
async: true,
contentType: false,
processData: false,
success: function (data) {
},
error: function (data) {
}
});
Run Code Online (Sandbox Code Playgroud)
上面的ajax成功击中了HireRocco方法,但hitListparam仍为null.我应该更改什么来传递一个字符串数组作为参数.
我正在玩ASP vnext和AngularJS.我已经设置了一个Web API,我正在使用一些控制器,并使用角度来做一些网络魔术.
我已按照本指南的大部分内容来启动和运行我的项目:http: //stephenwalther.com/archive/2015/01/29/asp-net-5-and-angularjs-part-6-security
......工作正常.我已经设置了我的数据库等等,我的工作正常.我也设置了身份框架,但我还没有使用它.
我想将一些数据发布到WebAPI.哪个也工作正常,但现在我想在使用防伪代币时这样做.我已经google了很多,我猜这最有意义: novablog
但是:这使用System.Web.Helpers来创建令牌并验证它们.它们在vnext中不再可用.我现在无法弄清楚用什么来创建和验证令牌.
有任何想法吗?
.net antiforgerytoken asp.net-web-api tag-helpers asp.net-core
我的视图模型中有一些属性在保存时是可选的,但在提交时是必需的.总之,我们允许部分保存,但提交整个表单,我们确实希望确保所有必填字段都有值.
我现在能想到的唯一方法是:
视图模型具有所有[Required]属性.如果请求是部分保存,则在进入控制器操作时ModelState.IsValid变为false.然后我运行所有ModelState(这是一个ICollection<KeyValuePair<string, ModelState>>)错误并删除[Required]属性引发的所有错误.
但是如果请求是提交整个表单,我不会干涉ModelState和[Required]属性生效.
这个更难看.一个视图模型将包含[Required]操作方法用于提交的所有属性.但是对于部分保存,我将表单数据发布到使用相同视图模型而没有所有[Required]属性的不同操作.
显然,我最终会遇到很多重复的代码/视图模型.
我一直在考虑是否可以[SubmitRequired]为这些必需的属性创建自定义数据注释属性.并且以某种方式使得验证在部分保存时忽略它,但在提交时则忽略.
仍然没有一个明确的线索.有人可以帮忙吗?谢谢.
asp.net ×7
asp.net-mvc ×6
c# ×6
razor ×3
webclient ×2
.net ×1
ajax ×1
asp.net-core ×1
build ×1
html ×1
javascript ×1
jquery ×1
json ×1
tag-helpers ×1
transform ×1
twitter ×1
viewmodel ×1