gpt4 book ai didi

asp.net-mvc - asp.net mvc 中的远程属性——在某些情况下会限制我们的模型

转载 作者:行者123 更新时间:2023-12-04 22:01:18 26 4
gpt4 key购买 nike

在 ASP.NET MVC3 中使用 Remote Attribute 时出现意外情况。

我使用的模型类型:

using System;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;

namespace dTweets.Models
{
// at first time, user should create his account with unique username
// as in twitter.com, user do
public class UserMetadata
{
[HiddenInput]
internal int Identity { get; set; }


[Remote("IsUserExist", "Account")] // at any HttpPost, username should
// be unique – not appropriate if
// updating/editing this model later

[Required(ErrorMessage = "username should be unique")]
public string UserName { get; set; } // user cannot change it, later


[DataType(DataType.Password)]
public string Password { get; set; } // user can also change password, later


[DataType(DataType.MultilineText)]
public string About { get; set; } // Optional field – user can edit it later
}

[MetadataType(typeof(UserMetadata))]
[Bind(Include="UserName, Password, About")]
public partial class User
{
}
}

远程属性在帐户创建时验证用户的唯一名称。但是当以后用户想要更新/更改他的帐户时,如果保持用户唯一名称相同,远程属性不允许更新模型。

这不是合适的结果,因为很少有用户更改其唯一的用户名。他们只是更改其他字段,例如“关于”字段或密码等。

[注意:在创建帐户时,我想检查用户唯一名称,所以我在这里使用了 Remote 属性,但稍后更新用户帐户时我不再需要 Remote 属性]

我必须删除 Remote 属性以便稍后更新此模型。

我想在不更改用户唯一名称的情况下更新/更改此模型(远程属性应用于此唯一名称)。

最佳答案

一种方法是在 AdditionalFields 命名参数中发送此记录的 ID 值,例如

[Remote("IsUserExist", "Account",AdditionalFields = "Identity")] 

然后您可以检查除属于当前用户的行之外的所有行的唯一性。并且不要忘记更改 IsUserEsists 操作结果的签名以接收像这样的身份

public ActionResutl IsUserExists(string UserName, int Identity)
{

}

关于asp.net-mvc - asp.net mvc 中的远程属性——在某些情况下会限制我们的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4991070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com