gpt4 book ai didi

c# - View 中的十进制验证

转载 作者:太空狗 更新时间:2023-10-30 01:20:24 26 4
gpt4 key购买 nike

我正在尝试从 MSDN 制作一个示例 MvcMusicStore 应用程序。我的模型类代码是:

    public class Album
{
public int Id { get; set; }

public int GenreId { get; set; }
public int ArtistId { get; set; }

[Required(ErrorMessage = "An Album Title is required")]
[StringLength(160)]
public string Title { get; set; }

[Required(ErrorMessage = "Price is required")]
[Range(0.01, double.MaxValue, ErrorMessage = "Price must be positive")]
public decimal Price { get; set; }

[DisplayName("Album Art URL")]
[StringLength(1024)]
public string AlbumArtUrl { get; set; }


public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
}

然后我通过脚手架(CRUD 模板)为 Controller 生成了代码。但是我在我的 View 中验证价格时遇到问题。这是我的 Razor 代码片段:

    <div class="editor-label">
@Html.LabelFor(model => model.Price)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
</div>

一切看起来都很好,客户端验证按预期工作,但问题出在服务器端验证上。这是Controller中的方法代码:

    [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Album album)
{
if (ModelState.IsValid)
{
db.Albums.Add(album);
db.SaveChanges();
return RedirectToAction("Index");
}

ViewBag.GenreId = new SelectList(db.Genres, "Id", "Name", album.GenreId);
ViewBag.ArtistId = new SelectList(db.Artists, "Id", "Name", album.ArtistId);
return View(album);
}

在这个方法的开头我插入了一个断点。调试器说 album.Price 总是等于 0。我想这是从文本框中的文本到 Controller 方法中的小数问题的转换。我总是插入点分隔的值,例如 10.99、12.65、19.99 等。它仅适用于整数值,例如 3、10、14 等。

如何解决?

最佳答案

您可以将文化显式设置为小数点分隔符为 的某些文化。:

<globalization uiCulture="en-US" culture="en-US" />

关于c# - View 中的十进制验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273889/

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