小编hut*_*oid的帖子

如何使用asp.net mvc 4避免在模型中更新某些字段

我是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但无法更新.请给我解决这个问题的方法.

提前致谢..

c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

5
推荐指数
1
解决办法
1万
查看次数

为什么我的电话会让Twitter用户时间表返回"401 Unauthorized."?

我从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)

c# twitter webclient twitter-oauth

5
推荐指数
1
解决办法
1266
查看次数

在Razor-4视图中访问模型属性

我有以下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)

c# asp.net-mvc viewmodel razor asp.net-mvc-4

5
推荐指数
1
解决办法
2万
查看次数

用于SelectList的System.Web.Mvc与System.Web.WebPages.Html

今天我注意到两个命名空间System.Web.Mvc,并System.Web.WebPages.Html有SelectListItem.它之间有什么区别,有时候你应该使用一个而不是另一个吗?

c# asp.net asp.net-mvc asp.net-webpages asp.net-mvc-5

5
推荐指数
1
解决办法
1464
查看次数

如何反序列化JSON

我正在研究我将数据从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)

c# asp.net json webclient deserialization

5
推荐指数
1
解决办法
317
查看次数

ASP.NET上的.cshtml razor文件转换

我正在尝试找到一种在构建项目时转换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)

asp.net asp.net-mvc transform build razor

5
推荐指数
1
解决办法
586
查看次数

ASP.Net MVC 4在表单提交上设置'onsubmit'

我有以下表格:

@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)

但是,它不起作用......我做错了什么?谢谢!

html asp.net asp.net-mvc razor asp.net-mvc-4

5
推荐指数
1
解决办法
2万
查看次数

将字符串数组作为jquery ajax中的数据传递给web api

我试图将字符串数组传递给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.我应该更改什么来传递一个字符串数组作为参数.

javascript asp.net ajax jquery asp.net-web-api

5
推荐指数
1
解决办法
7753
查看次数

ASP.NET 5中的手动防伪标记创建和验证

我正在玩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

5
推荐指数
1
解决办法
3136
查看次数

如何有选择地验证一些数据注释属性?

我的视图模型中有一些属性在保存时是可选的,但在提交时是必需的.总之,我们允许部分保存,但提交整个表单,我们确实希望确保所有必填字段都有值.

我现在能想到的唯一方法是:

操纵ModelState错误集合.

视图模型具有所有[Required]属性.如果请求是部分保存,则在进入控制器操作时ModelState.IsValid变为false.然后我运行所有ModelState(这是一个ICollection<KeyValuePair<string, ModelState>>)错误并删除[Required]属性引发的所有错误.

但是如果请求是提交整个表单,我不会干涉ModelState[Required]属性生效.

使用不同的视图模型进行部分保存和提交

这个更难看.一个视图模型将包含[Required]操作方法用于提交的所有属性.但是对于部分保存,我将表单数据发布到使用相同视图模型而没有所有[Required]属性的不同操作.

显然,我最终会遇到很多重复的代码/视图模型.

理想的解决方案

我一直在考虑是否可以[SubmitRequired]为这些必需的属性创建自定义数据注释属性.并且以某种方式使得验证在部分保存时忽略它,但在提交时则忽略.

仍然没有一个明确的线索.有人可以帮忙吗?谢谢.

c# asp.net asp.net-mvc model-binding data-annotations

5
推荐指数
1
解决办法
4260
查看次数