Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置文本输入';ViewBag的值是多少?ASP.NET MVC5_Asp.net_Asp.net Mvc_Viewbag - Fatal编程技术网

设置文本输入';ViewBag的值是多少?ASP.NET MVC5

设置文本输入';ViewBag的值是多少?ASP.NET MVC5,asp.net,asp.net-mvc,viewbag,Asp.net,Asp.net Mvc,Viewbag,我正在从控制器传递一个变量ViewBag.crimeRef,并使用它显示一条工作正常的消息: @if(ViewBag.crimeRef != null) { <div class="alert alert-dismissable alert-danger"> <button type="button" class="close" data-dismiss="alert">×</button> Sorry, there are n

我正在从控制器传递一个变量ViewBag.crimeRef,并使用它显示一条工作正常的消息:

@if(ViewBag.crimeRef != null)
{
    <div class="alert alert-dismissable alert-danger">
      <button type="button" class="close" data-dismiss="alert">×</button>
      Sorry, there are no matching results for the crime reference <strong>@ViewBag.crimeRef</strong>. Please try searching again.
    </div>    
}
是否可以使用ViewBag变量填充输入值


非常感谢

从报价中删除@ViewBag.crimeRef并尝试此功能

<input type="text" class="form-control" maxlength="11" id="crimeRef" name="crimeRef" placeholder="Crime reference" value=@(String.IsNullOrEmpty(ViewBag.crimeRef)?ViewBag.crimeRef:String.Empty) />

答案1:-


答复2:- 我将Nick的答案包括在这里,因为这是公认的答案,因此它将帮助其他stackoverflow用户在一个地方获得他们问题的答案。


从MVC4开始,条件语句实际上已内置到Razor中:

因此,简单地说:

<input type="text" class="form-control" maxlength="11" id="crimeRef" name="crimeRef" placeholder="Crime reference"
value="@(ViewBag.crimeRef)">
<input type="text" class="form-control" maxlength="11" id="crimeRef" name="crimeRef" placeholder="Crime reference"
    value="@(ViewBag.crimeRef)" }>


仅当
ViewBag.crimeRef
不是null-完美时,才会呈现value属性

您当前尝试的方法不起作用,
value
不是服务器端变量,因此您不能像现在这样引用它。但是,您可以做一些简单得多的事情

value='@(ViewBag.crimeRef ?? "")'

从MVC4开始,条件语句实际上已内置到Razor中:

因此,简单地说:

<input type="text" class="form-control" maxlength="11" id="crimeRef" name="crimeRef" placeholder="Crime reference"
value="@(ViewBag.crimeRef)">
<input type="text" class="form-control" maxlength="11" id="crimeRef" name="crimeRef" placeholder="Crime reference"
    value="@(ViewBag.crimeRef)" }>

仅当
ViewBag.crimeRef
不是null-完美时,才会呈现value属性


谢谢你的指点

哇,太好了,谢谢你!这是无效的
??
语法。很抱歉,您是正确的(我假设这里的大小写很重要,但忘记了
字符串
是有效的)。我个人倾向于在访问静态属性/方法时使用
String
,这就是它为我标记的原因。条件运算符在这里不起作用,
ViewBag.crimeRef
不能作为
bool
-您需要执行类似
String.IsNullOrEmpty(ViewBag.crimeRef)的操作
取而代之。谢谢你的回答谢谢你的回答伟大的解决方案:)没有所有的空检查,是的,与我以前尝试的解决方案相比,这是一个非常好和优雅的解决方案!有趣的是,我没有意识到这一点。@Nick很明显你当时试图在HTML之外和服务器端运行这段代码。你能给我看看你用的HTML吗?我的代码与异常编写的答案完全相同,只是长度较短-事实上,我必须更正他们的答案。@尼克:别担心,你的答案比我们两个都好,无论如何,你应该将其标记为已接受的答案(我从未意识到Razor已更新,以便为你执行此操作,在以前的版本中,它将输出
null
)@Exception我从来没有说过有,我只是想说,如果这种行为现在已经内置在Razor中,那么最好使用它,很明显OP使用的是更晚的版本,所以对于他们的问题,这是最好的答案。我们的答案没有问题,只是过时了:),但正如您所说,对旧版本很有用。@例外如果我没记错的话,您的原始答案是
@(ViewBag.crimeRef??ViewBag.crimeRef:string.Empty)
-这是无效的
语法(正如我的评论所指出的)。你在
2014-08-19 10:00:41Z
上发布了答案,我在
2014-08-19 10:03:41Z
上发表了评论,因此你的答案已经被更新了3分钟——我几乎不会认为这会打断你写答案。不管怎样,对于我需要等待多长时间才能对答案发表评论没有任何规定,如果我看到错误的答案,我会礼貌地在否决投票前给用户发表评论,因为这通常是一个打字错误。@例外我们不是在“战斗”,我们在讨论:)我觉得这里最好的答案是由Nick发布的(或者事实上,安德烈评论道)。然而,考虑到尼克不想要信用卡,并且已经接受了你的答案,我的建议是更新你的答案,以说明尼克的原因,这样其他偶然发现这个问题的人就可以得到最好的答案。
   ViewBag.crimeRef = null;   or        ViewBag.crimeRef = 1;
<input type="text" class="form-control" maxlength="11" id="crimeRef" name="crimeRef" placeholder="Crime reference"
    value="@(ViewBag.crimeRef)" }>