C# 单选按钮是否使用枚举只读?
在开发ASP.NETMVC4应用程序时,我遵循了上的答案和它的来源,但我的问题仍然存在 我正在创建一个编辑页面,希望将状态显示为两个单选按钮“Active”和“InActive”,这些值从数据库中读取为Enums 1=Active,2=InActive 问题是,当页面显示时,它会显示与数据库值相对应的正确单选按钮,但不允许用户更改/选择其他单选按钮 任何想法都会让我发疯 (同时,将chkbox的属性更改为bool将导致比此时解决的问题更多的问题。) 控制器C# 单选按钮是否使用枚举只读?,c#,asp.net,sql,html,asp.net-mvc-4,C#,Asp.net,Sql,Html,Asp.net Mvc 4,在开发ASP.NETMVC4应用程序时,我遵循了上的答案和它的来源,但我的问题仍然存在 我正在创建一个编辑页面,希望将状态显示为两个单选按钮“Active”和“InActive”,这些值从数据库中读取为Enums 1=Active,2=InActive 问题是,当页面显示时,它会显示与数据库值相对应的正确单选按钮,但不允许用户更改/选择其他单选按钮 任何想法都会让我发疯 (同时,将chkbox的属性更改为bool将导致比此时解决的问题更多的问题。) 控制器 [HttpPost] p
[HttpPost]
public ActionResult Edit(NewsArticle newsArticle, int id, HttpPostedFileBase Article)
{
try
{
if (ModelState.IsValid)
{
NewsArticle savedArticle= _newsArticle.Get(id);
savedArticle.Body = newsArticle.Body;
savedArticle.Title = newsArticle.Title;
savedArticle.Status = newsArticle.Status;
if(Article == null)
{
newsArticle.ArticleImage = savedArticle.ArticleImage;
}
else
{
using (var binaryReader = new BinaryReader(Request.Files[0].InputStream))
{
newsArticle.ArticleImage = binaryReader.ReadBytes(Request.Files[0].ContentLength);
}
savedArticle.ArticleImage = newsArticle.ArticleImage;
string imgeName = Path.GetFileName(Article.FileName);
savedArticle.ImageName = imgeName;
}
_uow.SaveChanges();
return RedirectToAction("Index");
}
视图
<div class="control-group">
<div class="editor-field">
<label class="control-label">Select Status :</label>
<div class="controls">
@Html.RadioButtonForEnum(n => n.Status)
</div>
</div>
</div>
明白了
将我的原始模型(文章)添加到viewModel并添加了bool属性。。。。活跃的
public bool Active
{
get
{
if (this.Article != null)
{
return (this.Article.Status == NewsArticleStatus.Active);
}
return false;
}
set
{
if (this.Article != null)
{
this.Article.Status = (value ? NewsArticleStatus.Active : NewsArticleStatus.Inactive);
}
}
}
创建chkbox
@Html.CheckBoxFor(n => n.Active)
因此,在控制器中,只需将值分配给新模型
newNews.Status = model.Article.Status;
出于好奇,枚举是否必须具有
[Flags]
属性?我认为这意味着Active
和Inactive
(=3
)将是一个有效值……不,您的权利可以删除。很抱歉,否则没有多大帮助。隐马尔可夫模型。。。当用户尝试选择另一个单选按钮时,页面会被刷新并从数据库中重新选择值吗?这意味着一些onchange方法应该设置值,因此当页面刷新时,将采用设置的值,而不是数据库中的值。一点也不,感谢您花费时间,我不这么认为,因为在生成页面时,根据数据库选择了当前值。
@Html.CheckBoxFor(n => n.Active)
newNews.Status = model.Article.Status;