sql html编码,用Razor .cshtml :::对SQLConnection字符串进行硬编码,如果有

我正在Razor Pages .NET Core 2.2页面上显示数据。它只允许我一次引用数据库上下文,如果尝试从其他表中获取值,则会给我一个错误。

这是我每次基于表进行操作时通过我的应用程序都能正常工作的原因。

public class DetailsModel : PageModel

{

private readonly OESAC.Models.MyDbContext _context;

public DetailsModel(OESAC.Models.MyDbContext context)

{

_context = context;

}

public OESAC.Models.Courses_New Courses_New { get; set; }

public async Task OnGetAsync(int? id)

{

ViewData["ThisID"] = id;

if (id == null)

{

return NotFound();

}

Courses_New = await _context.Courses_New.FirstOrDefaultAsync(m => m.NewCourseTempID == id)

下面,当我尝试访问同一页面/类中的另一个表时,我得到带下划线的名称“ DocsForThisCourseModel”,错误是“方法必须具有返回类型”:

private readonly OESAC.Models.MyDbContext _context;

public DocsForThisCourseModel(OESAC.Models.MyDbContext context)

{

_context = context;

}

我有种感觉,我可以更改整个系统以使用控制器和视图,但是相反,我对使用System.Data.SqlClient非常熟悉,我只是运行了一个查询以获取行数,如下所示:

using (SqlConnection con = new SqlConnection("Data Source=Txx\\SQL20xx4;Initial Catalog=xxx;User ID=xxx;Password=xxx;Persist Security Info=true"))

{

string sql = "SELECT Count(Course_NewID) As ExistingCourses FROM DocsForThisCourse WHERE Course_NewID =@id";

SqlCommand cmd = new SqlCommand(sql, con);

cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@id", id);

con.Open();

int count = Convert.ToInt32(cmd.ExecuteScalar());

con.Close();

//HIDE "SEE DOCUMENTS" BUTTON BECAUSE THERE ARE NO DOCUMENTS

if (count==0)

{

ViewData["HasDocs"] = "no";

}

else

{

ViewData["HasDocs"] = "yes";

}

}

这一切都可行,我在几个地方都这样做了,因为尝试运行2个查询时Razor Page似乎受到限制。我的困境是我似乎在我的appsettings.json文件中没有获得对“ DefaultConnection”的引用。所以我只复制了字符串,并在需要时在代码中使用它。

我已经尝试过,但无济于事。

var connString = Configuration.GetConnectionString("DefaultConnection");

我想,一旦我可以从appsettings.json中获得连接字符串,我会比对它进行硬编码要安全一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值