Skip to main content
 首页 » 编程设计

c#之检查 C# 中的空值之Webmatrix

2024年02月13日27youxin

我正在填充一个输入字段值,有时该值存在,有时不存在,我需要检查该值是否为空,如果不是,则不显示任何内容。我当前的代码正在使用 .IsNullOrEmpty :

<input id="lead-entry" class="form-textbox" type="text" size="5" name="q15_2013Collections[0][]"  
 value="@(queryinputvalue.FirstOrDefault(r => r.field_name.Equals("q15_2013Collections[0][]")).field_data.IsNullOrEmpty  
       ? ""  
       : queryinputvalue.FirstOrDefault(r =>  r.field_name.Equals("q15_2013Collections[0][]")).field_data) " /> 

这给了我错误:

Exception Details: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference 

谢谢

编辑:这是我最终使用的代码:

Helpers.cshtml

@helper checkEmpty(IEnumerable<dynamic> queryinputvalue, string field_id) {     
    var reqValue = queryinputvalue.FirstOrDefault(r => r.field_name.Equals(field_id)); 
    var return_value = ""; 
    if(reqValue != null){ 
        return_value = reqValue.field_data; 
    } else { 
        return_value = ""; 
        } 
    @return_value 
} 

在页面上

@{ 
IEnumerable<dynamic> queryinputvalue = db.Query("SELECT * FROM document_data WHERE doc_id = @0", doc_id); 
} 
 
<input type="text" class=" form-textbox" id="input_4" name="q4_arborLoan" size="20" value="@Helpers.checkEmpty(queryinputvalue,"q4_arborLoan")" /> 

请您参考如下方法:

为什么要在 View 中执行此操作?在填充 ViewModel 时,您必须检查 Controller 中的这些条件,如下所示:

public class ViewModel 
{ 
  public string QueryValue {get ; set;} 
} 

在您的 Controller 方法中,您只需填充此模型并将其返回到 View 页面。

public ActionResult MyMethod() 
{ 
    ViewModel model = new ViewModel(); 
    //Get someValue from anywhere. 
    string reqValue = someValue.FirstOrDefault(r => r.field_name.Equals("q15_2013Collections[0][]")); 
    string queryValue = string.Empty(); 
    if(queryValues != null) 
    { 
       queryValue = string.IsNullOrEmpty(reqValue .field_data) 
                  ? "" 
                  : reqValue .field_data; 
    } 
    model.QueryValue = queryValue ;                
    return View(model); 
} 

因此,您的 View 将简单地变成

@model ViewModel 
 
<input id="lead-entry" class="form-textbox" type="text" size="5" name="q15_2013Collections[0][]" value="@Model.QueryValue" />